[Effective Python] 02. PEP 8 스타일 가이드를 따르자

2021. 9. 3. 00:28Python/Effective Python

반응형

PEP 8

Python Enhancement Proposal #8

PEP 8에서 정의하고 있는 파이썬 코드 스타일 가이드를 따라, 일관성 있고 유지보수에 용이한 코드를 만드는 것을 권장합니다.

  1. Whitespace
  2. Naming
  3. Programming Recommendations

1. Whitespace

whitespace(공백)은 파이썬 내에서 문법적으로 의미가 있습니다.
파이썬은 중괄호가 아닌 whitespace로 단락을 구분하기 때문에 코드의 명료성을 위해 철저한 규칙을 지키는 것을 권장합니다.

  • Tab보다는 Space를 사용하자
  • 들여쓰기는 4 Space
  • 한 줄당 문자 길이는 79자 이하로 제한하자
  • 최상위 함수 또는 클래스는 빈줄 2개 로 구분짓습니다.
  • 클래스 내의 메서드는 빈줄 1개 로 구분짓습니다.
  • 리스트 인덱스, 함수호출, 키워드인수 할당에는 space를 사용하지 않습니다.
    • list[index]
    • func(1)
    • def complex(real, color=0.0):
        return magic(r=real, i=imag)
      
  • 변수 할당 시, Space는 앞뒤 하나씩만 사용합니다.
    • num = 4

2. Naming

  • 함수, 변수, 속성은 lowercase_underscore 형식으로 명명하자
  • protected 인스턴스 속성은 _leading_underscore 형식으로 명명하자
  • private 인스턴스 속성은 __double_leading_underscore 형식으로 명명하자
  • 클래스나 Exception은 CapitalizedWord 형식으로 명명하자
  • 상수는 UPPER_CASE_WITH_UNDERSCORES 형식으로 명명하자

  • 클래스의 인스턴스 메서드의 첫번째 파라미터의 이름은 언제나 self를 사용합니다
  • 클래스 메서드의 첫번째 파라미터 이름은 언제나 cls를 사용합니다

3. Programming Recommendations

  • not ... is 보다는 is not 표현식을 사용하자
    • # Correct:
      if foo is not None:
      
    • # Wrong:
      if not foo is None:
      
  • Sequence(strings, lists, tuples)에서 길이를 이용하여 Empty 체크를 하지 말자
    • # Correct:
      if not seq:
      if seq:
      
    • # Wrong:
      if len(seq):
      if not len(seq):
      
  • 한줄로된 if문, for/while 문, except문 등을 사용하지 말자
    • # Correct:
      if foo == 'blah':
        do_blah_thing()
      do_one()
      do_two()
      
    • # Wrong:
      if foo == 'blah': do_blah_thing()
      do_one(); do_two();
      
  • import문은 항상 파일의 맨 위에 두자
  • 모듈 import는 항상 절대 이름을 사용한다. (상대 경로는 사용하지 않는다)
  • 상대적인 import를 해야하는 경우, from .을 사용하자
  • import는 아래의 순서로 구분되며, 각 하위 섹션에서 알파벳 순서로 import 합니다.
    • Standard library imports.
    • Related third party imports.
    • Local application/library specific imports.

++ References

반응형

TAG