본문 바로가기

프로그래머/Python

[윤성우의 열혈 파이썬 중급편] 04. list comprehension 출처 : 윤성우의 열혈 파이썬 : 중급 04. list comprehension list comprehension r1 = [1, 2, 3, 4, 5] r2 = [] for i in r1: r2.append(i*2) r2 = [x*2 for x in r1] 조건 필터 추가하기 r1 = [1, 2, 3, 4, 5] r2 = [] for i in r1: if i % 2: r2.append(i*2) r2 = [x*2 for x in r1 if x % 2] 더보기
[윤성우의 열혈 파이썬 중급편] 03. 깊은 복사와 얕은 복사 출처 : 윤성우의 열혈 파이썬 : 중급 03. 깊은 복사와 얕은 복사 v1 == v2 : 두 변수가 참조하는 객체의 내용이 같은가? v1 is v2 : 두 변수가 참조하는 객체는 동일 객체인가? r1 = [1, 2, 3] r2 = [1, 2, 3] r1 is r2 # False r1 == r2 # True r1 = [1, 2, 3] r2 = r1 r1 is r2 # True r1 = ['John', ('man', 'USA'), [175, 23]] r2 = list(r1) r1 is r2 # False r1[0] is r2[0] # T r1[1] is r2[1] # T r1[2] is r2[2] # T 리스트는 각 값들을 (객체) 리스트 내에서 참조하는 형태이다 .. 더보기
[윤성우의 열혈 파이썬 중급편] 02. 수정 가능한 객체와 수정 불가능한 객체 출처 : 윤성우의 열혈 파이썬 : 중급 02. 수정 가능한 객체와 수정 불가능한 객체 수정 불가능한 객체(immutable object) : 객체가 지닌 값의 수정이 불가능한 객체 tuple, string ... 수정 가능한 객체(mutable object) : 객체가 지닌 값의 수정이 가능한 객체 list, dictionary ... r = [1,2] id(r) r += [3,4] id(r) # 리스트의 주소가 바뀌지 않음 t = (1,2) id(t) t += (3,4) id(t) # t에 저장된 튜플이 바뀌었음을 확인 성격에 따라 달라지는 함수의 정의 def add_last(m, n): m += n r = [1, 2] add_last(r, [3, 4]) print(r) # [1.2.3.4] t = (.. 더보기
[윤성우의 열혈 파이썬 중급편] 01. reference count와 garbage collection 출처 : 윤성우의 열혈 파이썬 : 중급 01. reference count와 garbage collection 변수 s가 문자열 'Garbage Collection'를 참조한다 s = 'Garbage Collection' 리스트는 소멸 대상이 된다 r = [1,2,3] r = 'simple' # 변수 r이 참조 대상을 문자열로 바꿈 r1 = [1,2,3,4] # 리스트의 rf = 1 r2 = r1 # 리스트의 rf = 2 r1 = 'simple' # 리스트의 rf = 1 r2 = 'happy' # 리스트의 rf = 0 -> gc 대상이 됨 reference count : 객체를 참조하는 변수의 수 reference count가 0이 .. 더보기
[Effective Python 복습] Chapter 8. 제품화 파이썬 코딩의 기술 Chapter 8. 제품화 54. 배포 환경을 구성하는 데는 모듈 스코프 코드를 고려하자 종종 프로그램을 여러 배포 환경에서 실행해야 하며, 각 환경마다 고유한 전제와 설정이 있다 모듈 스코프에서 일반 파이썬 문장을 사용하여 모듈 콘텐츠를 다르배포 환경에 맞출 수 있다 모듈 콘텐츠는 sys와 os 모듈을 이용한 호스트 조사 내역 같은 외부 조건의 결과물이 될 수 있다 프로그램의 일부를 오버라이드 # dev_main.py TESTING = True import db_connection db = db_connection.Database() # prod_main.py TESTING = False import db_connection db = db_connection.Database() # .. 더보기
[Effective Python 복습] Chapter 7. 협력 파이썬 코딩의 기술 Chapter 7. 협력 49. 모든 함수, 클래스, 모듈에 docstring을 작성하자 모든 모듈, 클래스, 함수를 docstring으로 문서화하자. 코드를 업데이트할 때마다 관련 문서도 업데이트하자 모듈 : 모듈의 내용과 모든 사용자가 알아둬야 할 중요한 클래스와 함수를 설명한다 클래스 : class문 다음의 docstring에서 클래스의 동작, 중요한 속성, 서브클래스의 동작을 설명한다 함수와 메서드 : def문 다음의 docstring에서 모든 인수, 반환 값, 일어나는 예외, 다른 동작들을 문서화한다 def palindrome(word): """Return True if the given word is a palindrome.""" return worn == word[::-1.. 더보기
[Effective Python 복습] Chapter 6. 내장 모듈 파이썬 코딩의 기술 내장 모듈 42. functools.wraps로 함수 데코레이터를 정의하자 데코레이터는 런타임에 한 함수로 다른 함수를 수정할 수 있게 해주는 파이썬 문법이다 데코레이터를 사용하면 디버거와 같이 객체 내부를 조사하는 도구가 이상하게 동작할 수도 있다 직접 데코레이터를 정의할 때 이런 문제를 피하려면 내장 모듈 functools의 wraps 데코레이터를 사용하자 def trace(func): def wrapper(*args, **kwargs): result = func(*args, **kwargs) print('%s(%r, %r) -> %r' % (func.__name__, args, kwargs, result)) return result return wrapper @trace def .. 더보기
[널널한 교수의 고급 파이썬] 05-5 파이썬 외부 라이브러리 05-5 파이썬 외부 라이브러리 외부 라이브러리는 PyPI라는 파이썬 패키지 인덱스를 통해서 조회할 수 있는데 2019년 현재 약 19만개의 프로젝트가 진행 중에 있다 이 내용은 pypi.org라는 웹사이트에서 확인할 수 있다 과학 계산과 데이터 분석 라이브러리 numpy, pandas 머신러닝 관련 라이브러리 tensorflow, pytorch, mxnet, scikit-learn 웹 서비스 개발 라이브러리 beautifulsoup, django, scrapy, requests 시각화와 그래픽 라이브러리 matplotlib, seaborn ,pyopengl, pyqt, pygtk, wapython 더보기
[널널한 교수의 고급 파이썬] 05-3, 05-4 파이썬 표준 라이브러리 05-3 파이썬 표준 라이브러리1 파이썬 내장함수 파이썬에서 사용되는 핵심적인 기능들은 함수로 미리 구현해 놓은 다음 파이썬 언어 인터프리터와 함께 배포하며 이를 파이썬의 내장함수라고 한다 내장함수의 종류로는 sum(), max(), min(), str(), id(), type() 등이 있으며, 파이썬 개발에 필수적인 약 70여개의 함수들이 존재한다 이 내장함수들은 별도의 import 문을 사용하지 않고 자유롭게 불러서 사용할 수 있다 파이썬 표준 라이브러리 파이썬 라이브러리들은 여러 기관에서 개발하고 있는데 이들 중 파이썬 소프트웨어 재단에서 공인하여 파이썬 배포시에 함께 배포하는 라이브러리들을 파이썬 표준 라이브러리라고 한다 파이썬 표준 라이브러리는 import문을 사용하여 불러와야 사용할 수 있다 .. 더보기
[널널한 교수의 고급 파이썬] 05-2 자동화된 코딩스타일 정비도구 05-2 자동화된 코딩스타일 정비도구 코딩 스타일 파이썬은 코딩 스타일에 대한 엄격한 가이드라인이 있습니다 이 가이드라인은 PEP-8 문서에 명시되어 있습니다 자신의 코드가 이 가이드 라인을 잘 준수한 코딩인지 스스로 판단하기 어려운 경우가 있습니다 자동화된 코딩스타일 정비도구 파이참 편집기의 오른쪽 하이라이트와 풍선 도움말 오른쪽에 있는 줄 이동 막대가 PEP8 규약에 어긋나는 코드를 하이라이트로 표시해준다 파이참 툴의 상단 메뉴에서 code > reformat code 를 누르면 자동으로 PEP-8의 규약에 따른 코드로 재 포매팅을 수행한다 자동 포매팅은 편리하나 한 줄 띄어쓰기 등의 세부적인 기능은 수행하지 않으므로 툴 팁을 참고로 하여 직접 편집해야 한다는 단점은 있다 더보기