본문 바로가기
Python

PEP 8: 파이썬 코딩 스타일 가이드

by Maccrey Coding 2024. 7. 16.
반응형

파이썬 코드를 작성할 때, 코드의 가독성을 높이고 유지보수성을 향상시키기 위해서는 일관된 스타일을 따르는 것이 중요합니다. PEP 8은 이러한 목적을 위해 만들어진 스타일 가이드입니다. 이번 글에서는 PEP 8의 주요 내용을 알아보고, 이를 어떻게 코드에 적용할 수 있는지 살펴보겠습니다.

1. 들여쓰기

파이썬은 들여쓰기를 통해 코드 블록을 구분합니다. PEP 8은 스페이스 4칸을 사용할 것을 권장합니다.

def my_function():
    if True:
        print("Hello, World!")

2. 최대 줄 길이

코드의 각 줄은 79자를 넘지 않도록 합니다. 긴 줄은 괄호, 백슬래시(), 또는 삼중 따옴표(""" """) 등을 사용하여 여러 줄로 나눌 수 있습니다.

# 나쁜 예
def my_function():
    print("이것은 매우 긴 문자열입니다. 이 문자열은 코드의 가독성을 떨어뜨릴 수 있습니다. 따라서 적절히 줄을 나누어야 합니다.")

# 좋은 예
def my_function():
    print("이것은 매우 긴 문자열입니다. "
          "이 문자열은 코드의 가독성을 떨어뜨릴 수 있습니다. "
          "따라서 적절히 줄을 나누어야 합니다.")

3. 공백

  • 연산자 주위의 공백: 할당(=), 비교(==, <, > 등), 산술(+, -, *, / 등) 연산자 주위에는 한 칸의 공백을 넣습니다.
x = 1 + 2
y = x * 3
  • 콤마(,) 주위의 공백: 콤마 다음에는 공백을 넣습니다.
my_list = [1, 2, 3, 4]

4. 주석

주석은 코드의 이해를 돕기 위해 사용되며, 가능한 한 명확하고 간결하게 작성해야 합니다.

  • 한 줄 주석: 코드와 같은 줄에 주석을 달 때는 최소 두 칸의 공백을 두고 #을 사용합니다.
x = x + 1  # x 값을 1 증가시킵니다.
  • 블록 주석: 여러 줄에 걸쳐 주석을 달 때는 각 줄마다 #을 사용합니다.
# 이 함수는 입력된 값을 제곱하여 반환합니다.
# 사용 예시: square(2) -> 4
def square(x):
    return x * x

5. 함수와 클래스

  • 함수 정의: 함수 이름은 소문자로 작성하며, 단어 사이는 밑줄(_)로 구분합니다. 함수와 함수 사이에는 두 줄의 빈 줄을 둡니다.
def my_function():
    pass

def another_function():
    pass
  • 클래스 정의: 클래스 이름은 단어의 첫 글자를 대문자로 합니다. 클래스와 클래스 사이에는 두 줄의 빈 줄을 둡니다.
class MyClass:
    pass

class AnotherClass:
    pass

6. 모듈 임포트

모듈을 임포트할 때는 한 줄에 하나의 모듈만 임포트합니다. 임포트 구문은 파일의 맨 위에 위치시킵니다.

import os
import sys

# 좋은 예
from subprocess import Popen, PIPE

# 나쁜 예
import sys, os

7. 문자열

문자열을 사용할 때는 일관된 따옴표 스타일을 유지합니다. PEP 8은 작은 따옴표(')나 큰 따옴표(") 중 하나를 선택해 사용하라고 권장합니다.

# 좋은 예
my_string = "Hello, World!"
another_string = 'Python is awesome!'

# 나쁜 예
my_string = 'Hello, World!"
another_string = "Python is awesome!'

8. 네이밍 컨벤션

  • 변수와 함수: 소문자와 밑줄(_)을 사용합니다.
my_variable = 1

def my_function():
    pass
  • 상수: 모두 대문자와 밑줄(_)을 사용합니다.
PI = 3.14159
MAX_SIZE = 100
  • 클래스: 단어의 첫 글자를 대문자로 사용합니다.
class MyClass:
    pass

9. 파일 및 디렉토리 이름

파일 이름은 소문자와 밑줄(_)을 사용합니다. 파이썬 모듈 및 패키지의 이름도 동일하게 적용합니다.

# 좋은 예
my_module.py
my_package/

# 나쁜 예
MyModule.py
MyPackage/

10. 코드 레이아웃

  • 빈 줄: 함수와 클래스 정의 사이에는 두 줄의 빈 줄을 둡니다. 클래스 내의 메서드 사이에는 한 줄의 빈 줄을 둡니다.
class MyClass:
    def method_one(self):
        pass

    def method_two(self):
        pass


def my_function():
    pass
  • 들여쓰기: 스페이스 4칸을 사용합니다.
def my_function():
    if True:
        print("Hello, World!")

11. 예외 처리

예외를 처리할 때는 특정 예외를 명시적으로 처리하도록 합니다.

try:
    result = 10 / 0
except ZeroDivisionError:
    print("0으로 나눌 수 없습니다.")

12. 문서화 문자열

모듈, 함수, 클래스, 메서드에는 문서화 문자열(docstring)을 사용하여 설명을 추가합니다.

def my_function():
    """
    이 함수는 입력된 값을 제곱하여 반환합니다.
    
    반환 값:
        int: 제곱된 값
    """
    pass

결론

PEP 8은 파이썬 코드를 작성할 때 일관성과 가독성을 높이는 데 큰 도움이 됩니다.

위에서 다룬 가이드라인을 참고하여 코드를 작성한다면, 다른 개발자들과 협업할 때도 코드의 가독성을 높이고 유지보수성을 향상시킬 수 있습니다.

여러분도 PEP 8 스타일 가이드를 준수하여 더 나은 파이썬 코드를 작성해보세요!

반응형