이펙티브 파이썬 - 2. PEP 8 스타일 가이드를 따르자
04 Sep 2018 | python effective
2. PEP 8 스타일 가이드를 따르자
- Python Enhancement Proposal #8 , PEP8은 파이썬 코드의 스타일 가이드
- 문법만 지킨다면 어떻게 코딩하던 에러는 뜨지 않음
- 하지만 일관성 있는 스타일을 사용한다면
- 유지보수가 쉬워짐
- 가독성 높아짐
- 프로젝트에서의 협업도 가능
-
파이썬의 진화에 따라 PEP 8도 지속적으로 업데이트 되는중임
- 중요한 몇가지만 살펴보면….
화이트 스페이스
- 파이썬에서 공백은 문법적으로 의미있음, 그러므로 영향에 민감한 편
- 탭이 아닌 스페이스로 들여쓴다. (vim이나 ide에서 tab을 누르면 4 space로 되도록 설정가능)
- 문법적으로 의미 있는 들여쓰기는 각 수준마다 스페이스 네 개 사용
- 한 줄의 문자 길이가 79자 이하여야 함
- 표현식이 길어서 다음 줄로 이어지면 일반적인 들여쓰기 수준에 추가로 스페이스 네 개를 사용
- 파일에서 함수와 클래스는 빈 줄 두 개로 구분해야 한다
- 클래스에서 메서드는 빈 줄 하나로 구분
- 리스트 인덱스, 함수 호출, 키워드 인수 할당에는 스페이스를 사용하지 않는다
- ex)
a[0:10] # a는 리스트, 리스트 인덱싱시 : 양 옆에 no space
foo = bar(foo=bar) # 키워드 인수 할당, 함수호출
- 변수 할당 앞뒤에 스페이스를 하나만 사용한다 (
a = 10
)
naming
- PEP 8은 언어의 부분별로 독자적인 명명 스타일을 제안, 각 이름에 대응하는 타입 구별이 쉬움
- 함수, 변수, 속성은
lowercase_underscore
형식을 따름
- protected 인스턴스 속성은
_leading_underscore
형식을 따름
- protected : getter and setter로 함부로 값을 조회하거나 바꿀수 없도록 보호해 놓은 , 같은 클래스, 패키지, 자손 클래스에서만 접근 가능
- private 인스턴스 속성은
__double_leading_underscore
형식을 따름
- private : 같은 클래스 내에서만 접근 가능
- 클래스와 예외는
CapitalizedWord
형식을 따름
- 모듈 수준 상수는
ALL_CAPS
형식을 따름
- 클래스의 인스턴스 메서드에서는 첫 번째 파라미터(해당 객체를 참조)의 이름을
self
로 지정
- 클래스의 메서드에서는 첫 번째 파라미터(해당 클래스를 참조)의 이름을
cls
로 지정
- 클래스 메서드, 인스턴스 메서드 : 인스턴스 메서드의 경우는 그 메서드를 실행한 인스턴스에만 영향을 미치지만, 클래스 메서드를 사용하면 그 클래스로 인해 만들어진 모든 인스턴스에 영향이 간다.
표현식과 문장
- 파이썬의 계명에는 “어떤 일을 하는 확실한 방법이 (될 수 있으면 하나만) 있어야한다” 라는 말이 있음
- PEP 8은 표현식과 문장의 본보기로 이 스타일을 정리
- 긍정 표현식의 부정 (
if not a is b
) 대신에 인라인 부정(if a is not b
)를 사용
- 길이를 확인할 때
==
사용 안함, 빈 값은 암시적으로 False
가 된다고 가정
if len(list) == 0
대신 if not somelist
- 값이 비어있지 않으면
True
가 됨
- 한 줄로 된 if 문, for와 while loop, except 복합문 ㄴㄴ
- 여러 줄로 나누어서 명료하게 작성
- 항상 파일의 맨 위에 import
- 모듈을 임포트할 때는 모듈의 절대이름 사용!
- 현재 모듈 경로를 기준으로 상대 경로 ㄴㄴ
- bar 패키지의 foo 모듈을 임포트하려면
import foo
ㄴㄴ. from bar import foo
ㅇㅇ
- 상대적인 임포트를 해야 한다면 명시적인 구문 사용
from . import foo
- 임포트는 표준 라이브러리 모듈 > 서드파티 모듈 > 자신이 만든 모듈 순으로 구분
- 각각의 섹션에서는 알파벳 순으로 임포트
- 핵심정리
- 파이썬 코드를 작성할 때 항상 PEP 8 스타일 가이드를 따르자
- 큰 파이썬 커뮤니티에서 다른 사람과 원활하게 협업하려면 공통된 스타일을 공유해야 한다.
- 일관성 있는 스타일로 작성하면 나중에 자신의 코드를 더 쉽게 수정할 수 있다.
2. PEP 8 스타일 가이드를 따르자
- Python Enhancement Proposal #8 , PEP8은 파이썬 코드의 스타일 가이드
- 문법만 지킨다면 어떻게 코딩하던 에러는 뜨지 않음
- 하지만 일관성 있는 스타일을 사용한다면
- 유지보수가 쉬워짐
- 가독성 높아짐
- 프로젝트에서의 협업도 가능
-
파이썬의 진화에 따라 PEP 8도 지속적으로 업데이트 되는중임
- 중요한 몇가지만 살펴보면….
화이트 스페이스
- 파이썬에서 공백은 문법적으로 의미있음, 그러므로 영향에 민감한 편
- 탭이 아닌 스페이스로 들여쓴다. (vim이나 ide에서 tab을 누르면 4 space로 되도록 설정가능)
- 문법적으로 의미 있는 들여쓰기는 각 수준마다 스페이스 네 개 사용
- 한 줄의 문자 길이가 79자 이하여야 함
- 표현식이 길어서 다음 줄로 이어지면 일반적인 들여쓰기 수준에 추가로 스페이스 네 개를 사용
- 파일에서 함수와 클래스는 빈 줄 두 개로 구분해야 한다
- 클래스에서 메서드는 빈 줄 하나로 구분
- 리스트 인덱스, 함수 호출, 키워드 인수 할당에는 스페이스를 사용하지 않는다
- ex)
a[0:10] # a는 리스트, 리스트 인덱싱시 : 양 옆에 no space
foo = bar(foo=bar) # 키워드 인수 할당, 함수호출
- 변수 할당 앞뒤에 스페이스를 하나만 사용한다 (
a = 10
)
naming
- PEP 8은 언어의 부분별로 독자적인 명명 스타일을 제안, 각 이름에 대응하는 타입 구별이 쉬움
- 함수, 변수, 속성은
lowercase_underscore
형식을 따름 - protected 인스턴스 속성은
_leading_underscore
형식을 따름- protected : getter and setter로 함부로 값을 조회하거나 바꿀수 없도록 보호해 놓은 , 같은 클래스, 패키지, 자손 클래스에서만 접근 가능
- private 인스턴스 속성은
__double_leading_underscore
형식을 따름- private : 같은 클래스 내에서만 접근 가능
- 클래스와 예외는
CapitalizedWord
형식을 따름 - 모듈 수준 상수는
ALL_CAPS
형식을 따름 - 클래스의 인스턴스 메서드에서는 첫 번째 파라미터(해당 객체를 참조)의 이름을
self
로 지정 - 클래스의 메서드에서는 첫 번째 파라미터(해당 클래스를 참조)의 이름을
cls
로 지정- 클래스 메서드, 인스턴스 메서드 : 인스턴스 메서드의 경우는 그 메서드를 실행한 인스턴스에만 영향을 미치지만, 클래스 메서드를 사용하면 그 클래스로 인해 만들어진 모든 인스턴스에 영향이 간다.
표현식과 문장
- 파이썬의 계명에는 “어떤 일을 하는 확실한 방법이 (될 수 있으면 하나만) 있어야한다” 라는 말이 있음
- PEP 8은 표현식과 문장의 본보기로 이 스타일을 정리
- 긍정 표현식의 부정 (
if not a is b
) 대신에 인라인 부정(if a is not b
)를 사용 - 길이를 확인할 때
==
사용 안함, 빈 값은 암시적으로False
가 된다고 가정if len(list) == 0
대신if not somelist
- 값이 비어있지 않으면
True
가 됨
- 한 줄로 된 if 문, for와 while loop, except 복합문 ㄴㄴ
- 여러 줄로 나누어서 명료하게 작성
- 항상 파일의 맨 위에 import
- 모듈을 임포트할 때는 모듈의 절대이름 사용!
- 현재 모듈 경로를 기준으로 상대 경로 ㄴㄴ
- bar 패키지의 foo 모듈을 임포트하려면
import foo
ㄴㄴ.from bar import foo
ㅇㅇ
- 상대적인 임포트를 해야 한다면 명시적인 구문 사용
from . import foo
- 임포트는 표준 라이브러리 모듈 > 서드파티 모듈 > 자신이 만든 모듈 순으로 구분
- 각각의 섹션에서는 알파벳 순으로 임포트
- 핵심정리
- 파이썬 코드를 작성할 때 항상 PEP 8 스타일 가이드를 따르자
- 큰 파이썬 커뮤니티에서 다른 사람과 원활하게 협업하려면 공통된 스타일을 공유해야 한다.
- 일관성 있는 스타일로 작성하면 나중에 자신의 코드를 더 쉽게 수정할 수 있다.
Comments