EXCELSIOR

BETTER WAY 02 - PEP 8 스타일 가이드를 따르자 본문

Python/Effective Python

BETTER WAY 02 - PEP 8 스타일 가이드를 따르자

Excelsior-JH 2018. 1. 22. 16:12

BETTER WAY 02 - PEP 8 스타일 가이드를 따르자

Item02 - Follow the PEP 8 Style Guide


PEP 8 이란?

  • Python Enhancement Proposal #8 의 약어
  • Python 코드를 어떻게 구성할지 알려주는 스타일 가이드
  • 일관성 있는 스타일을 사용하면 유지보수가 더욱 쉬워지고 가독성도 높아짐
  • https://www.python.org/dev/peps/pep-0008/ 에서 전체 가이드를 확인할 수 있음



반드시 따라야 하는 규칙들


1. Whitespace

Python에서 공백은 문법적으로 의미가 있다. 코드의 명료성 때문에 Whitespace에 민감하다.

  • 탭이 아닌 스페이스로 들여쓴다. $\rightarrow$ 탭도 되던데...
  • 문법적으로 의미있는 들여쓰기(indenting)는 스페이스 네 개를 사용한다.
  • 한 줄의 문자 길이가 79자 이하여야 한다.
  • 한 파일에서 함수와 클래스는 빈 줄 두개로 구분해야 한다.
  • 클래스에서 메서드는 빈 줄 하나로 구분해야 한다.
  • 리스트 인덱스, 함수 호출, 키워드 인수 할당에는 스페이스를 사용하지 않는다.
  • 변수 할당 앞뒤에 스페이스를 하나만 사용한다.


2. Naming
  • Functions(함수), Variables(변수), Attributes(속성)은 lowercase_underscore 형식을 따른다.
  • Protected instance attributes는 _leading_underscore 형식을 따른다.
  • Private instance attributes는 __double_leading_underscore 형식을 따른다.
  • Class, Except는 CapitalizedWord 형식을 따른다.
  • 모듈에서의 상수는 ALL_CAPS 형식을 따른다.
  • 클래스의 메소드(함수)는 첫 번째 파라미터의 이름을 self로 지정한다.
  • 클래스 메소드에서는 첫 번째 파라미터의 이름을 cls로 지정한다.


3. Expressions and Statements

  • if len(somelist) == 0으로 빈 값([] or '')을 확인하지 않고, if not somelist를 사용하여 빈 값은 False가 된다고 가정한다.
  • 반대로, 값이 있는경우([1] or 'hi'if somelist가 True가 된다.
  • 한 줄로 된 if문, for와 while 루프, except 복합문을 쓰지 않고, 여러 줄로 나눠서 명료하게 작성한다.
  • 항상 파일의 맨 위에 import 문을 놓는다.
  • import는 '표준 라이브러리 모듈, Third-Party 모듈, 자신이 만든 모듈' 순으로 구분해야 한다.

1
2
3
4
5
6
7
8
empty_list = []
 
if not empty_list: # False
    print("값이 없습니다.")
 
'''출력
값이 없습니다.
'''
cs



1
2
3
4
5
6
7
8
9
10
example_list = ['a''b''c']
 
if example_list: # True
    print("값이 있습니다.")
    print(example_list)
 
 
## 출력
# >> 값이 있습니다.
# >> ['a', 'b', 'c']
cs


Comments