1. 들여쓰기 (Indentation)
- 기본적으로 공백(스페이스) 4칸을 사용한다.
- 탭(Tab)과 공백을 섞어서 쓰지 않는 것이 좋다.
def example_function():
# 4칸 공백으로 들여쓰기
message = "Hello, PEP 8"
print(message)
2. 최대 줄 길이 (Maximum Line Length)
- 한 줄에 79자를 넘기지 않는 것을 권장한다.
- 주석이나 도큐멘테이션 문자열은 한 줄에 72자 이하로 제한하는 것을 권장한다.
- 코드가 너무 길어지면 백슬래시(\)나 괄호 등을 사용해 적절히 줄을 나눈다.
print("이 문장은 79자를 넘지 않도록 적절히 줄 바꿈을 해줘야 한다. "
"PEP 8 스타일 가이드를 준수하기 위해서다.")
3. 공백 (Whitespace) 사용
- 괄호, 쉼표, 콜론, 세미콜론 앞뒤에는 불필요한 공백을 두지 않는다.
- 할당 연산자(=), 비교 연산자(==), 산술 연산자(+, - 등)는 앞뒤로 1칸의 공백을 두는 것을 권장한다.
- 함수 호출의 인자나 리스트, 딕셔너리 정의 시에는 상황에 따라 붙여 쓰는 경우가 많다.
# 권장
spam(ham[1], {eggs: 2})
x = x + 1
# 비권장
spam( ham[ 1 ], { eggs : 2 } )
x=x+1
4. 빈 줄 (Blank Lines)
- 함수나 클래스 정의 사이에는 빈 줄을 두 줄 넣는다.
- 클래스 내 메서드 사이에는 빈 줄을 한 줄 넣는다.
class MyClass:
def method_one(self):
pass
def method_two(self):
pass
def my_function():
pass
def another_function():
pass
5. 임포트 (Imports)
- 임포트는 파일 상단에 몰아서 작성한다.
- 파이썬 표준 라이브러리, 서드파티 라이브러리, 로컬 라이브러리 순으로 구분해 정리한다.
- 한 줄에서 여러 모듈을 임포트하기보다는 한 줄에 하나씩 작성하는 것이 좋다.
import os
import sys
import requests
from my_local_module import MyLocalClass
6. 함수와 클래스의 명명 규칙 (Naming Conventions)
- 함수 이름은 소문자와 밑줄(_)을 사용하는 스네이크 케이스를 권장한다 (예: my_function).
- 변수 이름도 소문자와 밑줄을 사용한다 (예: my_variable).
- 클래스 이름은 각 단어의 첫 글자를 대문자로 쓰고, 단어를 붙이는 파스칼 케이스를 권장한다 (예: MyClass).
- 상수(변경되지 않는 값)는 모두 대문자로, 단어 사이는 밑줄로 구분한다 (예: MAX_SIZE, TOTAL_COUNT).
7. 문자열 따옴표 (Quotation)
- 일관적으로 '(싱글 쿼트)나 "(더블 쿼트)를 사용한다.
- 문자열 안에 다른 종류의 따옴표를 포함해야 할 때, 이스케이프를 줄이기 위해 적절한 따옴표를 선택하기도 한다.
msg = "Hello, world!"
other_msg = 'Python says "Hello"'
8. 모듈의 구조 (Structure of the Code)
- 보통 파이썬 파일(모듈)의 구조는 아래 순서를 따른다.
- 모듈 주석 혹은 독스트링
- 임포트
- 전역 변수, 상수
- 클래스 정의
- 함수 정의
- if __name__ == "__main__": 블록
9. 주석 (Comments)
- 코드와 동기화가 잘 맞아야 하며, 의미 없는 주석은 피한다.
- 핵심만 간결하게 적는 것이 좋다.
- 함수와 클래스에 대한 설명은 도큐멘테이션 문자열(독스트링)을 활용한다.
10. 도큐멘테이션 문자열 (Docstring)
- 함수, 클래스, 모듈의 맨 위에 작성해 사용 목적과 인자, 반환값 등을 설명한다.
- 보통 삼중 따옴표(""")로 감싸고, 여러 줄로 작성한다.
def my_function(param1, param2):
"""
이 함수가 하는 일에 대한 간단한 설명을 적는다.
:param param1: 설명
:param param2: 설명
:return: 반환 값에 대한 설명
"""
return param1 + param2
이 내용들은 PEP 8에서 권장하는 대표적인 규칙들을 요약한 것이다.
실제 프로젝트에서는 flake8, black, pylint 같은 도구를 통해 PEP 8 준수 여부를 검사하고, 자동으로 코드 스타일을 맞출 수 있다.
PEP 8을 지키면 협업 시 코드 일관성이 좋아지고, 가독성과 유지보수성이 향상된다는 장점이 있다.
'python' 카테고리의 다른 글
| [파이썬 / python] 클래스 메서드(Class Method)와 스태틱 메서드(Static Method) (0) | 2025.01.24 |
|---|---|
| [파이썬 / Python] 클래스(Class)와 객체(Object) (0) | 2025.01.23 |
| [파이썬 / python] 객체 지향 프로그래밍(Object Oriented Programming) (0) | 2024.09.29 |
| [파이썬 / python] 연산자 - 식별 연산자 (is, is not) (0) | 2024.09.22 |
| [파이썬 / python] 연산자 - 멤버쉽 연산자 (in, not in) (0) | 2024.09.20 |