/ PYTHON

Pythonic Thinking(1) 파이썬 효율적으로 사용하기

유명한 Effective 시리즈의 Python 부분을 읽고 정리하고자 한다. 효율적인 코드 작성을 위한 90가지 방법 중 하루에 3가지씩 정리해보자.

첫번째 챕터는 Pythonic Thinking이다. Pythonic이라는 것이 형용사로 만들어질만큼 C나 Java와는 다른 특성을 지는 것을 알 수 있다. Pythonic의 정의를 찾아보니 Stack Overflow에서는 Exploiting the features of the Python language to produce code that is clear, concise and maintainable.이라는 설명이 나온다. 즉, 파이썬 코드의 간결하고 명확한 특성을 나타내는 말이다. Pythonic Thinking은 이러한 명확한 코드를 구현하기 위한 생각 방식이라고 볼 수 있다.

  1. 파이썬 버전을 알자 최신 버전은 Python 3.8이다(2020년 8월 기준). 커맨드 또는 터미널에서 python3 --version 또는 python --version을 통해서 버전을 확인할 수 있다. 맥의 경우 python 2.7이 기본으로 설치되어 있는데 새로 Python 3을 설치해주자.
    • 명령 프롬트에서 올바른 버전의 파이썬이 설치되어 있는지 확인하자.
  2. PEP8 스타일 가이드를 따르자
    • PEP8 가이드에 대해 정리가 잘 된 블로그를 참조하자.
    • 공통의 스타일을 사용함으로써 협업을 용이하게 할 수 있다.
    • 일관적인 스타일의 사용은 추후 자신의 코드 수정을 용이하게 한다.
  3. bytesstr의 차이를 알자.
    • bytes: 8-bit values
      str: Unicode cdoe points
    • 헬퍼 함수(개발자의 편의를 위한 함수)를 이용해서 원하는 문자 시퀀스 타입을 리턴하도록 하자.
    • bytesstr 인스턴스는 서로 연산할 수 없다 (>, ==, +, % 등).
    • 바이너리 데이터를 읽고 쓰기 위해서는 ‘rb’, ‘wb’ 모드에서 파일을 open한다.
       with open('data.bin', 'wb') as f:
        f.write(b'\xf1\xf2\xf3\xf4\xf5')
      
       with open('data.bin', 'rb') as f:
        data = f.read()
      
    • Unicode 데이터를 읽고 쓸 때에는 시스템의 디폴트 인코딩에 주의해라. encoding parameter를 명시적으로 전달하자.
      아래는 윈도우의 ‘cp1252’로 인코딩된 파일을 읽는 예시.
       with open('data.bin', 'r', encoding='cp1252) as f:
        data = f.read()
      

출처: Slatkin, B. (2020). Effective Python: 90 specific ways to write better Python. USA: Addison-Wesley.