[파이썬 튜토리얼] PEP(Python Enhancement Proposals)

PlanB·2022년 9월 27일
3

파이썬 튜토리얼

목록 보기
7/21

Level 1

PEP

PEP는 Python Enhancement Proposal의 약자다. 파이썬 개선 제안서라는 의미 그대로, 파이썬을 개선(Enhancement)하고자 하는 제안서(Proposal)에 번호를 붙여 공개한 것이다. PEP 페이지에 접속하면 찾아볼 수 있다. 파이썬의 기능들 중에는 PEP에서 시작된 것들도 꽤 있다.

PEP의 각 주제는 번호를 부여받는다. 예로 앞 단원들의 Level 2에서 설명한 파이썬 파일의 이름을 짓는 관례, 주석 작성의 관례의 내용은 Style Guide for Python Code라는 PEP의 내용을 가져온 것이다. 이 문서는 8번을 부여받았으므로, PEP 8이라는 이름으로 부르기도 한다.

이렇게 파이썬의 기능이나 사용 요령이 PEP에 상세히 설명되어 있는 경우가 자주 있으므로, '이 개념은 PEP 몇 번에 명시되어 있다'는 식의 내용이 앞으로 종종 등장할 것이다. 어떤 기능이 만들어진 이유나 역사, 토론 과정 전체를 다루기는 어렵기 때문에, 필요하다면 문서를 참고할 수 있도록 언급하는 것이다. 직접 찾아보려면 PEP 500처럼 검색하고, python.org에 공개되어 있는 문서에 접근하면 된다. 또는 python.org/dev/peps/pep-0500과 같이 URL을 직접 입력해 접근할 수도 있다.

URL을 통해 PEP 문서에 접근하는 경우, 숫자 앞에 0을 채워 네 자릿수로 만들어야 정상적으로 접근할 수 있다. 가령 PEP 8에 접근하고자 한다면 python.org/dev/peps/pep-8이 아니라 python.org/dev/peps/pep-0008로 접속해야 한다.

관례와 PEP 8

코드에도 성격이 있다. 만약 Hello, world!를 출력하는 내용의 코드를 작성한다고 하면, 다음처럼 사람마다 코드를 다르게 작성할 수 있다.

print('Hello, world!')
print ('Hello, world!')
print ( 'Hello, world!' )
print(
    'Hello, world!'
)

이렇게 코드를 작성하는 성격을 코딩 스타일(Coding Style)이라고 한다. 코드를 작성한 사람과 읽는 사람 사이에 코딩 스타일의 차이가 클수록, 코드를 이해하는 데에 시간이 더 많이 소요된다. 따라서 코딩 스타일은 통일되는 것이 좋다.

파이썬은 공식적인 스타일 가이드를 만들어, PEP 8 -- Style Guide for Python Code을 통해 공개했다. 대부분의 파이썬 개발자들은 이 가이드에 기반해 코드를 작성한다.

앞으로 코드 스타일에 관해 '~하는 방식을 권장한다' 처럼 설명하는 부분이 있다면, PEP 8의 내용일 것이라고 생각하면 된다. PEP 8 밖의 이야기라면 특별히 언급할 것이다.

아직 파이썬에 대해 알아볼 것이 많이 남아 있기 때문에, PEP 8의 내용에 대해서는 여기서 더 구체적으로 이야기하지 않는다. 중요한 항목들은 모두 앞으로의 내용에 자연스레 담길 예정이다.

조언

  • PEP 8의 내용이 영어로 작성되어 있어 어렵다면, 한국어로 번역된 글도 많으니 PEP 8 한국어같은 키워드로 검색해 찾아보도록 하자.
  • PEP 8이 제안하는 스타일은 실제로 의미있게 사용된다. 그리고 여러 비공식 스타일 가이드들도 PEP 8에 기반하고 있다. 따라서 PEP 8의 내용만 잘 숙지하고 있으면, 코드 스타일 때문에 생기는 문제를 대부분 피할 수 있다.

Level 2

PyCharm의 PEP 8 지원

PyCharm은 PEP 8을 기준으로 코드를 검사한다. 스타일을 위반하는 부분이 있다면, 밑줄을 그어 문제를 안내한다.

비공식 스타일 가이드

PEP 8이라는 공식 스타일 가이드는 많은 곳에서 통용되고 있다. 하지만 많은 조직들은 PEP 8에 완전히 만족하지 않는다. 자신들의 성격과 어울리지 않는 부분을 다듬어서 새로운 가이드를 만드는 경우가 있고, 대표적으로 Google Python Style Guide가 있다.

이러한 비공식 스타일 가이드는 보통 PEP 8과 상반된 내용을 갖지 않는다. 대부분 PEP 8에서 언급하지 않은 내용을 보충하거나, 선택의 여지를 남겨둔 부분을 확정하는 것이 위주다. 예를 들어 PEP 8에서는 문자열을 감싸는 따옴표의 종류를 따로 권장하지 않지만, black 이라는 코드 스타일에서는 큰 따옴표를 사용하도록 정해져 있다.

Level 3

pycodestyle

pycodestyle이라는 서드파티 라이브러리가 있다. PEP 8을 기준으로 코드 검사를 수행하는 CLI 툴이다. 원래는 pep8이라는 이름이었는데, 귀도 반 로섬의 부탁으로 이름이 바뀌었다.

pyflakes, flake8, ...

PEP 8을 확장해 비공식 스타일 가이드가 생기는 것처럼, CLI 툴 또한 가지각색의 성격으로 개발되어오고 있다. 스타일에 대한 검사를 제외하고 에러만을 확인하는 pyflakes, 코드의 복잡도를 계산하는 flake8 등이 있다. 스타일 위반을 검사해서 알려주는 것만이 아니라, 코드를 직접 건드리는 formatter 형태의 autopep8, yapf, black 등도 눈여겨볼만 하다. 이들에 대한 상세한 설명과 비교는 나중에 다룰 예정이다.

profile
백엔드를 주로 다룹니다. 최고가 될 수 없는 주제로는 글을 쓰지 않습니다.

0개의 댓글