Effective Python C1. Pythonic(2) - PEP 8 스타일 가이드를 따르라

5 분 소요

Introduction

PEP란 파이썬 개선 제안(Python Enhancement Proposal)을 의미하며 파이썬 코드를 어떻게 작성하는 것이 좋은지 알려주는 스타일 가이드이다.
이번 포스팅에서는 제일 중요한 스타일 가이드인 PEP8에 대해 정리하였다.

Best WAY 2 : PEP 8 스타일 가이드를 따르라

PEP8은 깔끔하게 코드를 작성하는 방법을 제시하며, 많은 파이선 개발자들과 커뮤니티들이 이 제안을 따른다.
클린한 코드를 작성하기 위해서는 최소한 이 가이드대로 작성하는 것이 좋다.

공백의 처리

  • 탭 대신 스페이스를 4번 사용해 들여쓰기해라.
    • 단, 이미 탭을 쓴 코드를 수정할 경우, 그대로 탭을 쓴다. 절대로 탭과 스페이스를 혼용해 쓰지 않는다.
  • 라인의 길이는 79 문자 이하여야 한다.
  • 긴 식을 다음 줄에 이어서 쓸 경우 일반적인 들여쓰기보다 4 스페이스 더 들여써야 한다.
  • 파일 안에서 각 함수와 클래스 사이에는 빈 줄을 두 줄 넣어라.
  • 클래스 안에서 메서드와 메서드 사이에는 빈 줄을 한 줄 넣어라.
  • 딕셔너리에서 키와 콜론(:) 사이에 공백을 넣지 말고, 콜론과 값 차이에 스페이스를 하나 넣는다. ex) {‘key’: value}
  • 변수 대입에서 = 전후에는 스페이스를 하나씩 넣는다.

명명 규약

  • 함수, 변수, 애트리뷰트는 소문자와 밑줄을 사용한다. ex) lowercase_value
  • 보호되어야 하는 인스턴스 애트리뷰트는 일반적인 애트리뷰트 이름 규칙을 따르되, 언더바(_)로 시작한다. ex) _protected_value
  • 비공개 인스턴스 애트리뷰트는 일반적인 애트리뷰트 이름 규칙을 따르되, 언더바 두개로 시작한다. ex) __private_value
  • 예외를 포함한 클래스는 여러 단어를 이어 붙이고 각 단어의 첫글자는 대문자로 만든다. ex) CapitalizedWord
  • 모듈 수준의 상수는 모든 글자를 대문자로 하고 단어와 단어 사이를 밑줄로 연결한다. ex) ALL_CAPS
  • 클래스에 들어 있는 인스턴스 메서드는 호출 대상 객체를 가리키는 첫 번째 인자의 이름으로 반드시 self를 사용한다.
  • 클래스 메서드는 클래스를 가리키는 첫 번째 인자의 이름으로 반드시 cls를 사용한다.

식과 문

  • 부정문의 경우 밖에 놓지 말고, 내부에 넣어라. ex) if a is not b (O), if not a is b (X)
  • 빈컨테이너나 시퀀스를 검사 시, 길이 0을 비교하지 말고, False로 취급됨을 이용해 if not 컨테이너 와 같이 써라.
  • 마찬가지로 비어있지 않은 컨테이너나 시퀀스는 if 컨테이너와 같이 True로 취급해 사용한다.
  • 식을 한 줄 안에 다 쓸 수 없는 경우, 식을 괄호로 둘러싸고 줄바꿈과 들여쓰기를 추가해서 읽기 쉽게 만들라.
  • 여러 줄을 걸쳐 식을 쓸 때는 줄이 계속된다는 표시를 하는 \ 문자보다는 괄호를 사용하라.

임포트

  • import 문(from x import y도 포함)을 항상 파일 맨 앞에 위치시켜라.
  • 모듈을 임포트할 때는 절대적인 이름을 사용하고, 현 모듈의 경로에 상대적인 이름은 사용하지 않는다.
    ex) bar 패키지에서 foo 모듈을 임포트할 시, import foo 보다 from bar import foo 라고 한다.
  • 반드시 상대적인 경로로 임포트해야 되는 경우 from . import foo 와 같이 명시적 구문을 사용한다.
  • 임포트를 적을 때는 표준 라이브러리, 서드 파티, 직접 만든 모듈 순서로 섹션을 나누고 알파벳 순서로 모듈을 임포트해라.

Discussion

탭 대신 스페이스를 4번 사용하는 이유

개인적으로는 탭을 1번 쓰는 것이 스페이스 4번 쓰는 것보다 편하기 때문에 탭을 쓰고 싶으나.. PEP8에서는 탭을 권장하지 않는다.
이는 탭을 쓸 경우 상황에 따라 보여지는 공백의 길이가 달라지기 때문이라는 의견도 있으나, 어찌되었건 일관적인 코드 스타일을 위해서는 정해진 규약대로 스페이스 4번을 사용해야 한다는 의견이 주로 보이고 있다. 이와 관련해서는 다른 개발자들 사이에서도 논쟁이 좀 있는 편인데 이글 을 참조해도 좋을 것 같다.

PEP8를 가이드하는 툴

파이참 IDE에서는 코드를 작성하면 PEP8를 제대로 지키는지 자동으로 알려준다. 책에서는 Pylint 라는 정적 분석기의 도움을 받아 PEP8을 가이드 해준다. 기타 다른 IDE에서도 PEP8와 관련된 Plugin이 있으니 사용해도 좋을 것 같다.

Summary

  • 파이썬 코드 작성 시 PEP8 스타일 가이드를 따라야 한다.

Reference

파이썬 코딩의 기술 제 2판. - 브렛 슬리킨 지음 / 오현석 옮김
PEP8 공식 문서