본문 바로가기

Python/Python 기초

파이썬 코딩 스타일 가이드

코딩 스타일은 예민한 주제다. 하지만 다룰 필요가 있다.


블록을 지정하기 위해 들여쓰기를 쓰는 파이썬은 다른 언어에 비해


코딩 스타일에서 유리한 점이 있다.


블록이 있기 때문에 "중괄호를 어디에 써야 하나요?" 같은


질문을 피할 수 있는 건 축복이지만 세상이 그렇게 쉽지는 않다.


파이썬 세계에선 "어떻게 들여 써야 하나요?" 라는 질문이 있다.


그래서 현명한 파이썬 커뮤니티는 PEP 8


(Style Guide for Python Code, http://legacy.python.org/dev/peps/pep-0008/)에 표준 스타일을 소개하였다.



1. 들여쓰기는 공백 문자 네 개로 하자.


2. 한줄의 최대 글자는 79자로 한다.


3. 최상위 함수와 클래스 정의들은 두 줄씩 띄우자.


4. 파일은 UTF-8 또는 아스키(ASCII)로 인코딩하자.


5. 한 import 문에선 모듈 하나만 임포트한다.

한 줄에 import 문 하나만 쓰자. import는 파일의 처음에 두지만

docstring과 같은 주석이 있으면 바로 그 다음에 위치시키자.

import는 표준 라이브러리, 서드 파티, 로컬 라이브러리 순으로 묶자.


6. 소괄호나 중괄호, 대괄호 사이에 추가로 공백을 주지 말고,

쉼표 안에도 공백을 주지 말자,


7. 클래스 이름은 CamelCase처럼 카멜케이스를 따르자.

예외명은 Error로 끝내자. 함수 이름은 separated_by_underscores처럼

소문자와 밑줄 문자(_)를 이용해서 짓자. 비공개인 속성이나 메서드 이름은

밑줄 문자로 시작하자(_private).



이 가이드라인들은 어렵지 않고 충분히 의미가 있다.


대부분의 파이썬 개발자들은 코딩을 하면서


이 가이드라인을 따르는 게 어렵지 않을 것이다.


하지만 실수를 하니까 인간이다.


매번 PEP 8 가이드 라인을 맞추기 위해 코드를 훑어보는 것은 성가신 일이다.


그래서 pep8(https://pypi.python.org/pypi/pep8)을 쓰면 이 검사를 자동으로 할 수 있다.


(파이썬에 pep8이 기본으로 들어있지 않기 때문에 설치해야 한다.)


예)

$ pep8 hello.py

hello.py:4:1: E302 expected 2 blank lines, found 1

$ echo $?

1


pep8은  PEP 8을 다르지 않는 줄과 열 그리고 위반 사항을 코드와 함께 알려준다.


PEP8 명세에서 필수인 것들을 어겼다면 글자 E로 시작하는 에러로 보고되고,


사소한 문제들은 W로 시작하는 경고로 표시된다.


그리고 세 자리 숫자가 어떤 종류의 에러나 경고인지 알려주는데


이 숫자들은 그룹화되어 있어 어떤 성격의 에러인지 쉽게 알 수 있다.


예를 들어 E2로 시작하는 이슈들은 공백 문자에 대한 것들이다


E3로 시작하는 이슈들은 공백 줄에 대한 것들이며 W6로 시작하는 경고들은


현재 파일에서 사용되고 있는 폐기된 기능들에 대한 것들이다.


파이썬 커뮤니티는 표준 라이브러리가 아닌 코드들이


PEP 8을 지키는것에 대한 논쟁을 계속하고 있다.


내 의견은 언제나 작성한 코드에 대해 주기적으로 PEP 8 검사 도구를 이용해


확인하라는 것이다.


테스트 스위트와 통합하면 쉽다.


이는 다소 극단적일 수 있지만 PEP 8 가이드라인을 장기적으로 따를 수 있는 좋은 방법이다.