본문 바로가기
Python

[Python] Effective Python 2nd - PEP 8 스타일 가이드

by ete-llorona 2022. 12. 31.

스프링 프레임워크로 솔루션을 개발하는 팀에서 혼자 파이썬으로 개발을 진행하다보니, 

가독성 높은 코드, 군더더기 없는 파이썬 클린 코드에 대한 욕심이 생기는 것 같다. 

그래서 시작한 건 Baekjoon Online Judge 매일 한 문제 이상 푸는 것과 Effective Python 책을 읽는 것이다. 

 

Baekjoon Online Judge https://www.acmicpc.net/

Effective Python 2nd (파이썬 코딩의 기술) https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=254321728

 

Effective Python 2nd 이펙티브 파이썬 : 파이썬 코딩의 기술

아마존 파이썬 프로그래밍 분야 베스트셀러, Effective Python 전면 개정 증보판. 파이썬다운 방식으로 프로그램을 작성하는 방법, 파이썬을 사용하는 가장 좋은 방법에 대한 통찰을 담았다. 2판에서

www.aladin.co.kr

 

 

Effective Python 책은 PEP 8 가이드 외에도 파이썬 중급, 고급 개발자로 성장하기 위해서 

밥아저씨(참 쉽죠 그 아저씨 아님)의 클린 코드 책 처럼 곁에 두고 내 것으로 만들어야 할 기법들이 소개되어 있다. 

 

이 책에서 가장 첫 머리에 소개하는 내용은 현재 사용 중인 파이썬의 버전을 알아두라는 것이다. 

터미널이나 cmd 에서는 python --version 으로 pc에 설치된 파이썬 버전을 확인할 수 있다.

 

python --version

 

파이썬 코드 내에서 확인 하는 방법은 내장 모듈인 sys 를 불러와서 확인할 수 있다. 

 

import sys

print(sys.version)
print(sys.version_info)

 

 

그 다음은 PEP 8 스타일 가이드에 대한 소개이다. 

 

PEP 8 은 파이썬 개선 제안 (Python Enhancement Proposal) # 8 의 줄임말로

파이썬 코드를 어떤 형식으로 작성할 지 가이드라인을 제공한다. 

 

원문은 https://peps.python.org/pep-0008/ 에 있으며, 

한국어 버전은 https://wikidocs.net/7896 이곳에서 읽을 수 있다. 

 

 

1. 공백(탭, 스페이스, 개행 등) 에 대한 가이드라인

 

-  탭 대신 스페이스(4칸)를 사용해 들여쓰기

-  라인 길이는 79개 문자 이하로 작성하기

-  파일 안에서 각 함수와 클래스 사이에는 빈 줄을 두 줄 넣기

-  클래스 안에서 메서드와 메서드 사이에는 빈 줄을 한 줄 넣기

-  dict 에서는 key: value 로 작성하기 (key 와 : 사이에는 공백 없고, : 과 value 사이에는 공백을 하나 넣기)

-  변수를 대입할 때는 = 전후에 스페이스 하나씩 넣기 (var = 10)

-  타입 표기를 덧붙이는 경우 var: str 로 작성하기 (변수명과 : 사이에는 공백 없고,  : 과 타입 정보 사이에는 공백 하나 넣기)

 

 

2. 명명 규칙에 대한 가이드라인

 

-  함수, 변수, 속성은 snake_case로 작성하기

보호해야 하는 인스턴스 속성은 앞에 밑줄로 시작하기 ( _name)

-  비공개(private) 인스턴스 속성은 앞에 밑줄 두개로 시작하기 ( __name)

-  클래스는 PascalCase로 작성하기

-  모듈 수준의 상수는 대문자로 하고 단어와 단어 사이는 밑줄로 작성하기 (MAX_VALUE)

-  클래스 내의 인스턴스 메소드는 첫 번째 인자의 이름으로 반드시 self를 사용하기

-  클래스 메소드는 첫 번째 인자의 이름으로 반드시 cls를 사용하기

 

 

3. 식과 문장에 대한 가이드라인

 

-  빈 컨테이너를 검사할 때는 길이를 0과 비교하지 않고 (if len(foo) == 0 대신 if not foo) 사용하기

-  비어있지 않은 컨테이너를 검사할 때는 0과 큰지 비교하지 않고 (if len(foo) > 0 대신 if foo ) 사용하기

-  if 문, for 문, while 문을 작성할 때는 명확성을 위해 각 부분을 여러 줄에 나눠서 작성하기

 

 

4. import 사용법에 대한 가이드라인

 

-  import 문을 항상 파일 맨 앞에 위치시키기

-  import 순서는 표준 라이브러리 모듈, 서드파티 모듈, 직접 만든 모듈 순서로 섹션을 나누고,

   각 섹션에서는 모듈 순서로 불러오기

 

 

IDE 툴로 PyCharm 을 사용하면 PEP 8 스타일이 지켜지지 않을 경우 경고 메시지가 뜨기 때문에 

pylint 를 설치하지 않더라도 PEP 8 스타일에 맞춰 코드를 작성할 수는 있다. 

하지만 여러 명이서 같이 작업할 때는 lint의 도움이 필요할 것 같다. 

 

 

 

댓글