[파이썬, Python]PEP-8 코딩 스타일
코딩을 하면서 좋은 코딩 습관, 스타일을 갖추는 것이 중요하다는 생각이 들었다.
그래서 기존 코딩 스타일을 버리고, 파이썬 프로그래머들의 일반적인 코딩 스타일인 'PEP-8' 스타일로 코딩 습관을 갖춰보려고 중요한 내용을 정리해 보려고 한다.
www.python.org/dev/peps/pep-0008/
PEP 8 -- Style Guide for Python Code
The official home of the Python Programming Language
www.python.org
이 링크를 통해 들어가보면 PEP 8에 대한 자세한 소개가 있다.
"PEP-8"스타일에 대한 장점
-이 코딩 스타일을 적용하는 것은 자신의 코드를 명료하게 할 뿐만 아니라, 특히 다른 개발자나 커뮤니티간 코딩을 공유할 떄 매우 효율적이다.
*코드 레이아웃 부분에서..
1. 들여쓰기를 할 떄 Tab 대신 공백 (Space)를 사용한다. 특히 Python 3는 Tab과 공백을 혼용해서 사용하는 것을 허용하지 않는다.
2. 문법적으로 들여쓰기를 할 때는 4개의 공백을 사용한다.
3. 각 라인은 79자 이하로 한다. 라인이 길어서 다음 라인으로 넘어갈 때는 원래 들여씌기 자리에서 4개의 공백을 더 들여쓴다.
4. 함수나 클래스는 2개의 공백라인을 추가하여 구분한다. 메서드는 한 개의 공백 라인으로 구분한다.
5. import는 여러 모듈을 콤마로 연결하지 말고, 한 라인에 하나의 모듈을 import 한다.
6. 컬렉션 인덱스나 함수 호출, 함수 파라미터 등 에서 불필요한 공백을 넣지 않는다.
ex)
No:
spam( ham[ 1 ], { eggs: 2 } )
bar = (0, )
spam (1)
Yes:
spam(ham[1], {eggs: 2})
bar = (0,)
spam(1)
7. 변수 할당시 할당자 앞뒤로 하나의 공백만 넣는다.
NO.i=i+1 (x) -> Yes. i = i + 1
명명규칙 부분..
1. 함수, 변수, Attribute는 소문자로 단어 간은 밑줄(_)을 사용하여 연결한다.
예) total_numbers
2. 클래스는 단어 첫 문자마다 대문자를 써서 연결하는 CapWords포맷으로 명명한다 (CoreClass)
3. 모듈명은 짧게 소문자로 사용하며 밑줄을 쓸 수 있다. 패키지명 역시 짧게 소문자를 사용하지만 밑줄은 사용하지 않는다. (serial_reader)
4. 모듈 상수는 모두 대문자를 사용하고 단어마다 밑줄로 연결하는 ALL_CAPS포맷으로 명명한다
(MAX_COUNT = 100)
5. 클래스의 public attribute 는 밑줄로 시작하지 말아야 한다. (name)
6. 클래스의 protected instance attribute는 하나의 밑줄로 시작한다(_intialized)
7. 클래스의 private instance attribute는 2개의 밑줄로 시작한다(__private_var)
8. 클래스 메서드는 클래스 자신을 가리키기 위해 cls를 사용한다 (def clone(cls, other): )
문장과 표현식
1. if, for, while 블럭 문장을 한 라인으로 작성하지 말 것. 여러 라인에 걸쳐 사용하는 것이 더 명료함
NO. if a<0 : a = 0 ->
Yes. if a < 0:
a=0
2. a는 b가 아니다를 표현할 떄 a is not b를 사용한다 . not a is b를 사용하지 말 것.
3. 값이 비어있는지 아닌지를 검사하기 위해 길이를 체크하는 방식을 사용하지 말 것, 대신 if ,mylist와 같이 표현함.
No: if len(mylist) == 0
Yes: if not mylist
No: if len(mylist) > 0
Yes: if mylist
4. import 문은 항상 파일의 상단에 위치하며, 표준라이브러리 모듈, 3rd Party 모듈, 그리고 자신의 모듈 순으로 import한다.
예:
import os
import numpy
improt mypkg
5. 모듈 import 시 절대 경로를 사용할 것을 권장한다. 예를 들어, sibling모듈이 현재 모듈과 같은 폴더에 있더라도 패키지명부터 절대 경로를 사용함, 단 복잡한 패키지 경로를 갖는 경우 상대경로(.)를 사용할 수 있다.
No:
import sibling
Yes:
import mypkg.sibling
from mypkg import sibling
from . import sibling # 상대경로
from .sibling import example
'PYTHON > [Python] Techs' 카테고리의 다른 글
[Python,파이썬]네이버 실시간 검색어 Crawling방법(다운로드) (3) | 2020.08.15 |
---|
댓글