..
Pep8 스타일 가이드
What is PEP 8
- Python enhancedment Proposal #8 으로 파이썬 개선 제안 또는 PEP8 이라고 부른다.
- PEP8 은 파이썬 코드를 어떤 형식으로 작성할지 알려주는
스타일 가이드
이다.
PEP 8 을 이용하는 이유
- 문법만 올바르다면 어떤형식으로 코드를 작성해도 되지만 일관적인 스타일 을 사용한다면 코드를 더욱 친숙하게 접근하고 , 코드 가용성을 키울수 있다.
- 협업 을 할때 공통된 스타일가이드를 따른다면 더욱 쉽게 이를 진행할수 있다.
- 실수를 줄일수 있으며 코드를 수정하기도 편하다.
공백
여기서 의미하는 공백은 탭,스패이스,새줄(newLine) 등의 문자를 모두 합한 말이다.
탭
대신스페이스
를 사용해 들여쓰자- 문법적으로 중요한 들여쓰기에는
4칸 스페이스를
사용하자 - 라인길이는
79개 문자 이하
로 작성하자.(한글은 한글자는 영문 두글자 에 해당한다.) - 긴식을 다음줄에 이어서 쓸 경우에는
4스페이스
를 더 들여쓰자. - 파일안에서 각 함수와 클래스 사이에는
빈줄 2줄
넣자. - 클래스 안에서 메소드 와 메소드 사이에는
빈줄 한줄
넣자. - dictionary 안에서 키와 콜론 사이에는
공백을 넣지않고
- 한줄안에
키와 값을 같이 넣는 경우
에는 콜론 다음에스페이스 하나
넣자. - 변수 대입에서 = 전후에는
스페이스 하나
씩만 넣자. - 타입 표기를 덧붙이는 경우에는 변수 이름과 콜론 사이에
공백을 넣지 않도록
하자 - 타입 표기할때 콜론과 타입 정보 사이에는
스페이스 하나
넣자.
명명규약
- 함수,변수,애트리뷰트 는
lowercase_underscore
처럼 소문자와 밑줄을 사용하자. (snake case) - 보호돼야 하는 인스턴스 애트리뷰트 는 일반적인 애트리뷰트 이름 규칙을 따르되.
_leading_underscore
처럼 밑줄로 시작하자. - 비공개 인스턴스 애트리뷰트 는 일반적인 애트리뷰트 이름규칙을 따르되
__leading_underscore
처럼 밑줄 두개로 시작하자. - 클래스는
CapitalizedWord
처럼 여러단어를 이어붙이되, 각단어의 첫글자를 대문자로 만들자. (PascalCase) - 모듈수준의 상수는
ALL_CAPS
처럼 모든 글자를 대문자로 하고 단어와 단어 사이를 밑줄로 연결한 형태를 사용하자. - 클래스에 들어있는 인스턴스 메서드는 호출 대상 객체를 가리키는 첫번째 인자의 이름으로 반드시
self
를 사용하자. - 클래스 메서드는 클래스를 가리키는 첫 번째 인자의 이름으로 반드시
cls
를 사용해야한다.
식과 문
‘파이썬의 선’ 에서는 ‘문제를 해결할 명백한 방법이 하나 있으며, 가급적이면 유일해야 한다’고 언급한다.
- 긍정적인 식을 부정하지 말고
(if not a is b)
부정을 내부에 넣자.(if a is not b)
- 컨테이너 나 시퀀스 를 검사 할때는 길이를 0과 비교하지 말고
(if len(a) == 0)
,(if len(a) != 0)
, 빈 컨테이너나 시퀀스 값이 암묵적으로 True 혹은 False 로 취급된다는 사실을 활용해(if not 컨테이너)
,(if 컨테이너)
라는 조건문을 쓰자 - 한줄짜리 if 문이나 한줄짜리 for,while 루프,except 복합문을 사용하지 말고 명확하게 각부분을 여러 줄로 나눠 배치하자.
- 식을 한줄에 다 작성 할수 없는 경우 식을
괄호
로 둘러싸고 줄바꿈과 들여쓰기를 추가해서 익기 쉽게 만들자. - 여러줄에 걸쳐 식을 쓸때는 줄이 계속된다는 표시를 하는
\
보다는괄호
를 이용하라
import
Pylint 도구 를 사용하면 PEP8 스타일 가이드를 자동으로 실행 해주며 , 다양한 오류를 감지해준다.
import
문을 항상 파일 맨 앞에 위치시켜라.-
모듈을 import 할때는 절대적인 이름을 사용하고 , 현모듈의 경로에 상대적인 이름을 사용하지 말라
ex) bar 패키지 에서 foo 를 임포트 하는경우
import foo
라고 하면 안되고
from bar import foo
처럼 어디 패키지에서 import 하는지 명시해줘야 한다.
- 반드시 상대적인 경로로 임포트 해야 하는 경우에는
from . import foo
처럼 명시적인 구문을 사용하자.
- 임포트를 적을 때는
표준 라이브러리 모듈
,서드 파티 모듈
,내가 만든 모듈
의 순서로 섹션을 나눠라 각 세션에서는알파벳 순서
로 모듈을 임포트 하라.