[카테고리:] 미분류

  • PEP 8: Python 코드 스타일 가이드

    Python에서 코드 스타일은 가독성을 높이고 유지보수를 용이하게 만드는 중요한 요소입니다. PEP 8은 Python 코드의 일관성을 유지하기 위한 스타일 가이드로, Python 개발자들이 따라야 할 권장사항을 제공합니다. 이번 포스트에서는 PEP 8의 주요 내용을 살펴보고, 이를 자동으로 검사할 수 있는 flake8 도구에 대해 알아보겠습니다.


    1. PEP 8의 주요 내용

    PEP 8은 코드 스타일을 정의하는 다양한 규칙을 포함하고 있습니다. 여기에서는 주요 항목을 정리해 보겠습니다.

    (1) 공백 및 들여쓰기 (Whitespace & Indentation)

    • 4개의 공백(space) 사용: 들여쓰기에는 4개의 공백을 사용하며, 탭(tab)은 사용하지 않습니다.
    • 연속된 여러 줄을 작성할 경우: 수직 정렬이나 \를 사용할 수 있지만, 가급적 ()를 활용하는 것이 좋습니다.
    • 연산자 앞뒤 공백: 연산자(=, +, -, *, /, etc.) 앞뒤에는 공백을 추가합니다.
    # 올바른 예시
    x = (a + b) * (c - d)
    
    def my_function():
        print("Hello, world!")
    
    # 잘못된 예시
    y=(a+b)*(c-d)
    def another_function():
    	print("Bad indentation")  # (탭 사용은 금지)
    

    (2) 코드 길이 제한 (Line Length)

    • 79자 이하: 일반 코드의 최대 길이는 79자로 제한하는 것이 좋습니다.
    • 주석은 72자 이하: 주석(comment)은 72자를 넘지 않도록 작성하는 것이 권장됩니다.
    • 긴 문장은 줄 바꿈 사용: 긴 코드는 ()로 감싸 여러 줄에 나누어 작성할 수 있습니다.
    # 올바른 예시
    my_variable = (
        "This is a very long string that exceeds the character limit, "
        "so it is split into multiple lines for readability."
    )
    

    (3) 함수 및 클래스 정의

    • 함수명은 소문자 + 언더스코어: def my_function():
    • 클래스명은 카멜케이스: class MyClass:
    • 두 줄 띄우기: 최상위 함수와 클래스 정의 전후에는 두 줄을 띄웁니다.
    # 올바른 예시
    class MyClass:
        pass
    
    
    def my_function():
        pass
    

    2. PEP 8 자동 검사: flake8

    PEP 8 규칙을 일일이 확인하는 것은 어렵기 때문에, 자동으로 검사해 주는 도구를 활용하는 것이 좋습니다. flake8은 코드 스타일을 점검하는 강력한 도구로, 간단한 명령어로 PEP 8 위반 사항을 찾을 수 있습니다.

    (1) flake8 설치하기

    pip3 install flake8 --user
    

    (2) flake8 사용법

    flake8 my_script.py
    

    예를 들어, a.py 파일을 검사하면 다음과 같은 결과가 나올 수 있습니다:

    a.py:1:2: E225 missing whitespace around operator
    a.py:3:1: W191 indentation contains tabs
    a.py:4:1: W391 blank line at end of file
    

    위 오류들은 다음과 같은 문제를 나타냅니다:

    • E225: 연산자 주변에 공백이 없음
    • W191: 탭을 사용한 들여쓰기
    • W391: 파일 끝에 불필요한 공백 줄 포함

    3. vim을 이용한 자동 코드 포맷팅

    vim을 사용하는 경우, .vimrc 파일을 설정하여 PEP 8 스타일을 준수하도록 만들 수 있습니다.

    (1) .vimrc 설정 예시

    set smartindent
    set tabstop=4
    set expandtab
    set shiftwidth=4
    set textwidth=79
    

    이 설정을 적용하면:

    • smartindent: 자동 들여쓰기 활성화
    • tabstop=4: 탭 크기를 4칸으로 설정
    • expandtab: 탭 대신 공백 사용
    • shiftwidth=4: 자동 들여쓰기 크기를 4칸으로 설정
    • textwidth=79: 79자 이상이면 자동 줄 바꿈

    결론

    PEP 8은 Python 코드의 가독성을 높이고 협업을 원활하게 만드는 중요한 스타일 가이드입니다. 이를 준수하면 유지보수성이 뛰어난 코드를 작성할 수 있으며, flake8을 활용하면 자동으로 코드 스타일을 검사할 수 있습니다. 또한, vim 환경에서도 설정을 통해 일관된 코드 스타일을 유지할 수 있습니다.

    Python 개발자로서 PEP 8을 숙지하고 준수하는 것은 필수적인 역량이므로, 이를 적극적으로 활용해보세요!