-
Pythonic: 파이썬의 클로저
* 클로저와 변수 스코프에 상호작용
클로저(Closure)란?
클로저란, 자신이 정의된 스코프(scope:유효범위)에 있는 변수를 참조하는 함수다. 하기 예제 코드를 보면,
change_core
함수가change
함수의left
인수에 바로 접근하고 있는데, 바로 클로저 덕분에 접근이 가능한 것이다.예제1
들어온 인수 위치를 바꿔 출력하는 함수
def change(left, right): def change_core(in_right): return in_right, left rtn = change_core(right) print(rtn) change(1, 2) >>> (2, 1)
-
Pythonic: None을 반환하기보다는, 에러를 일으키자
* None을 반환하지 않기
None을 반환할 경우
나누기 함수를 작성해보자.
def divide(a, b): try: return a / b except ZeroDivisionError: # --> 0으로 나누려고 할 때(부모가 0), 에러가 발생한다. return None result = divide(x, y) if not result: # --> None은 파이썬에서 false로 간주되기 때문. print('잘못된 입력')
상기 코드는 치명적인 오류가 있다. 만약 분자가 0일 경우(예시: 0 / 7 = 0 ), 해당
divide
함수는 0을 리턴할 것이며, 정확한 계산이지만 파이썬에서는{}
,''
,0
,None
을false
로 간주하기 때문에 저 if문을 타버릴 것이다.물론 상기 코드를 다음과 같이 개선하면 문제는 없다.
-
Pythonic: 리스트 컴프리헨션과 제너레이터 살펴보기
* 리스트 컴프리헨션과 제너레이터
리스트 컴프리헨션
새로운 리스트 만들기
map과 lambda함수를 통해서 만들기 보단, 다음과 같이 명료하게 나타내며 리스트를 생성한다.
before = [1, 2, 3, 4, 5] after = [v*2 for v in before] # OK # after = map(lambda v: v * 2, before) # X -> 동작하나, 파이써닉하지 못함. print(after) >>> [2, 4, 6, 8, 10]
-
Pythonic: PEP8 스타일 가이드
* PEP 8 스타일 가이드
파이썬 개선 제안서(Python Enhancement Proposal) #8
간단하게 파이썬 코드 스타일 가이드라고 생각하면 된다.
기대할 수 있는 효과
- 일관성 있는 스타일은 유지보수를 용이하게 한다.
- 가독성이 높아진다.
- 다른 커뮤니티에 속한 다른 프로그래머와도 협업이 용이하다.
-
Gitbash: gitbash에서 tmux 사용하기
Windows + git-bash + tmux
나는 linux기반인 MacOS 찬양자였으나, 이번 이직으로 윈도우 환경에서 일을 하게 되었다. WindowOS에서는 Bash사용이 불편할 수 밖에 없는데, 별 수 없다. 환경이야 만들면 된다.
git-bash
다행히 어렵지 않았다. cmder나 powershell도 많이 사용하는 것 같으나, git설치만으로 같이 설치되는 git-bash가 사용도 편리해서 이걸로 정했다. 평소에 터미널에서 tmux를 사용하는데, git-bash에 반영하는데 사실 몇 가지 문제가 있어서 해당 내용을 블로깅 해보려고한다. git은 공홈에서 다운받아 사용하면 된다.