본문 바로가기
PYTHON/[Python] Techs

[파이썬, Python]PEP-8 코딩 스타일

by AndrewL 2020. 12. 23.

[파이썬, 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

 

 

 

 

댓글