개발자입니다
[클린코드 파이썬] 3장: 코딩 스타일 정립과 코드 포매팅 자동화 본문
스타일 가이드와 PEP 8
파이썬 개선 제안 8(이하 PEP 8)은 파이썬 코어 개발팀이 작성한 스타일 가이드 중 하나다.
PEP 8 문서는 https://www.python.org/dev/peps/pep-0008/ 에서 읽어볼 수 있다.
가로 간격
들여쓰기를 위한 공백 문자 사용
코드 행 내의 공백 활용
연산자와 식별자 사이에 공백 한 칸
# 잘된 예
blanks = blanks[:i] + secretWord[i] + blanks[i + 1 :]
# 나쁜 예
blanks=blanks[:i]+secretWord[i]+blanks[i+1:]
구분자는 앞쪽이 아니라 뒤쪽에 공백 한 칸
# 잘된 예
def spam(eggs, bacon, ham):
weights = [42.0, 3.1415, 2.718]
# 나쁜 예
def spam(eggs,bacon,ham):
weights = [42.0,3.1415,2.718]
구분자 앞에 공백을 추가해서는 안 된다. 구분자가 불필요하게 눈에 띄기 때문이다.
마침표의 앞뒤에는 공백을 넣지 않는다
# 잘된 예
'Hello, world'.upper()
# 나쁜 예
'Hello, world' . upper()
# 잘된 예
spam[2]
spam[0:3]
pet['name']
# 나쁜 예
spam [2]
spam [0:3]
pet ['name']
여는 괄호 뒤와 닫는 괄호 앞에는 공백을 넣지 않는다
# 잘된 예
def spam(eggs, bacon, ham):
weights = [42.0, 3.1415, 2.718]
# 나쁜 예
def spam( eggs , bacon , ham ):
weights = [ 42.0 , 3.1415 , 2.718 ]
코드행 끝의 주석 앞에는 공백 2칸
# 잘된 예
print('Hello, world!') # 인사말 출력
# 나쁜 예
print('Hello, world!') # 인사말 출력
print('Hello, world!')# 인사말 출력
세로 간격
PEP 8에는 코드에 빈 행을 삽입하기 위한 몇 가지 지침이 있다. 즉 함수나 클래스는 두 줄의 빈 행을 넣고, 클래스 내의 메소드는 빈 행 한 줄을 넣어 구분해야 한다고 명시했다.
# 나쁜 예
class ExampleClass:
def exampleMethod1():
pass
def exampleMethod2():
pass
def exampleFunction():
pass
# 잘된 예
class ExampleClass:
def exampleMethod1():
pass
def exampleMethod2():
pass
def exampleFunction():
pass
세로 간격의 모범 사례
세미콜론을 넣어 두 행을 구분하면 한 행에 쓸 수 있다.
print('What is your name?')
name = input()
print('What is your name?'); name = input()
if, for, def, class 문과 같이 콜론(:)으로 끝나는 문에 한 줄짜리 블록으로 따라오게 할 수 있다.
if name == 'Alice':
print('Hello, Alice!')
if name == 'Alice': print('Hello, Alice!')
다음과 같은 import 문 하나로 여러 모듈을 가져올 수도 있다.
import math, os, sys
하지만 PEP 8에서는 다음과 같이 모듈당 하나의 import 문을 사용하는 방식으로 나눠 쓸 것을 추천한다.
import math
import os
import sys
import 문 별로 행을 분리해서 코드를 작성해두면 임포트된 모듈의 추가 또는 제거 여부를 시각적으로 확인하기가 수월해진다.
또한 PEP 8에서는 import 문을 다음과 같이 세 그룹으로 묶어서 번호 순서대로 배치할 것을 권장한다.
- math, os, sys 등 파이썬 표준 라이브러리의 모듈
- 셀레늄Selenium, 리퀘스트Requests, 장고 등 서드파티 모듈
- 현재 작성중인 프로그램의 일부인 로컬 모듈
엄격한 코드 포매터, 블랙
블랙은 .py 파일의 코드를 자동으로 포매팅한다.
블랙 도구 설치 방법
>python -m pip install --user black
명령행에서 블랙을 실행하는 방법
>python -m black yourScript.py
블랙의 행 길이 설정 조정
파이썬 코드의 표준 행 길이는 80자(아스키 문자 기준)다.
>python -m black -l 120 yourScript.py
블랙의 문자열 큰따옴표 설정 비활성화
문자열 리터럴을 여러분이 작성한 대로 놔두고, 따옴표의 종류를 블랙이 변경하지 않게 하고 싶다면 -S 명령행 옵션을 사용하자(여기서 S는 대문자라는 점에 유의하자)
>python -m black -S yourScript.py
블랙이 변경할 내용 미리보기
>python -m black --diff yourScript.py
'Python > 클린 코드, 이제는 파이썬이다' 카테고리의 다른 글
[클린코드 파이썬] 6장: 파이썬다운 코드를 작성하는 법 (5) | 2024.09.01 |
---|---|
[클린코드 파이썬] 5장: 코드 악취 감지와 대응 (4) | 2024.09.01 |
[클린코드 파이썬] 4장: 이해하기 쉬운 이름 (0) | 2024.08.27 |
[클린코드 파이썬] 1장: 에러 메시지 파악과 고수의 도움을 받기 위한 질문 에티켓 (0) | 2024.08.27 |
[클린코드 파이썬] 0장: 추천 학습 도서 (0) | 2024.08.21 |