• 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, Nonefalse로 간주하기 때문에 저 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

    간단하게 파이썬 코드 스타일 가이드라고 생각하면 된다.

    기대할 수 있는 효과

    1. 일관성 있는 스타일은 유지보수를 용이하게 한다.
    2. 가독성이 높아진다.
    3. 다른 커뮤니티에 속한 다른 프로그래머와도 협업이 용이하다.


  • Gitbash: gitbash에서 tmux 사용하기


    Windows + git-bash + tmux

    나는 linux기반인 MacOS 찬양자였으나, 이번 이직으로 윈도우 환경에서 일을 하게 되었다. WindowOS에서는 Bash사용이 불편할 수 밖에 없는데, 별 수 없다. 환경이야 만들면 된다.

    git-bash

    다행히 어렵지 않았다. cmder나 powershell도 많이 사용하는 것 같으나, git설치만으로 같이 설치되는 git-bash가 사용도 편리해서 이걸로 정했다. 평소에 터미널에서 tmux를 사용하는데, git-bash에 반영하는데 사실 몇 가지 문제가 있어서 해당 내용을 블로깅 해보려고한다. git은 공홈에서 다운받아 사용하면 된다.