A. Programming/Python

[파이썬 기초] PEP8 알아보기

_DK_ 2021. 7. 28. 12:00
반응형
인간은 인생의 방향을 결정할 규칙을 가지고 있어야 한다.
- 존 웨인


  이전 글들을 통해서 파이썬을 설치하고, IDE나 텍스트 에디터를 설치하고 환경을 설정해줌으로써 파이썬을 이용하여 코딩을 할 준비가 완료가 되었다고 할 수 있습니다.

 

[A. Programming/Python] - 파이썬(Python) 설치 개발 환경 구축하기

 

파이썬(Python) 설치 개발 환경 구축하기

만일 내게 나무를 베기 위해 한 시간만 주어진다면, 우선 나는 도끼를 가는데 45분을 쓸 것이다. - 에이브러햄 링컨 앞선 글들을 통해서 프로그래밍 언어의 종류와 특성이 무엇인지에 대해서 간

yongbba.tistory.com

 

[A. Programming/Python] - 파이참(PyCharm) 파이썬 IDE 설치

 

파이참(PyCharm) 파이썬 IDE 설치

시작은 그 일의 가장 중요한 부분이다. - 플라톤 이전 글에서 파이썬(Python)으로 개발을 하기 위한 첫 단계로 파이썬 설치를 해보았습니다. [A. Programming/Python] - 파이썬(Python) 설치 개발 환경 구축

yongbba.tistory.com

 

[A. Programming/Python] - 노트패드++(Notepad++) 텍스트 에디터로 파이썬 코딩 해보기

 

노트패드++(Notepad++) 텍스트 에디터로 파이썬 코딩 해보기

험한 언덕을 오르기 위해 처음에는 천천히 걷는 것이 필요하다. - 셰익스피어 앞선 글에서 파이썬(Python)을 설치하고 파이참(PyCharm) IDE 설치를 통해 파이썬 개발 환경을 구성하는 것에 대해 알아

yongbba.tistory.com

 

  이제 코딩에 대한 부분을 하나둘 적어나가려고 하다 보니 실제적으로 코딩하기 전에 알아두면 좋을 것들이 떠올라서 그것들에 대해서 먼저 기술을 해보려고 합니다. 어느 정도 코딩을 배운 뒤에 알아도 상관은 없지만 처음 코딩을 배우시는 분들이라면 이런 것들이 있다는 것을 먼저 알고 한다면 더 효율적이라고 생각되어 먼저 알아보려고 합니다.

 

 

 PEP8 - Style Guide for Python Code

 

  이번에는 파이썬에 대해서 공부하다 보면 듣게 되는 PEP8에 대해서 알아보려고 합니다. PEP8에 대한 내용은 아래의 공식 사이트에서 확인해보실 수 있습니다.

https://www.python.org/dev/peps/pep-0008/

 

PEP 8 -- Style Guide for Python Code

The official home of the Python Programming Language

www.python.org

 

  PEP8에 대해서 간단하게 이야기하면 PEPs(Python Enhancement Proposals) 중 하나로 파이썬 코딩 스타일에 대한 가이드를 제시한다고 보면 됩니다. 흔히 파이썬 언어에 맞게 코딩하는 것을 Pythonic이라고 부르는데 PEP8의 가이드에 맞춰 작성된 코드들이 이에 해당한다고 보시면 될 것 같습니다.

 

 

  위의 사이트에 들어가면 영어로 설명들이 나오는데 영어에 거부감이 없으시다면 한 번쯤은 끝까지 다 읽어보시길 추천드립니다.(예시도 함께 제공이 되고 있기 때문에 이해가 어렵지는 않을 것입니다.) 이 글에서는 그중 가장 중요한 몇 가지 사항들에 대해서만 살펴보려고 합니다.

 

 들여 쓰기(Indentation)

 

  파이썬 언어에서 가장 중요한 것은 들여 쓰기입니다. 다른 프로그래밍 언어들에서는 가독성을 위해서 들여 쓰기를 사용하지만 파이썬에서는 가독성이 아닌 필수 사항입니다. 

 

for i in range(5):
    print(i)

 

  위와 같이 for문이나 if문 등의 제어문을 사용할 때는 반드시 ':' 이후에 들여쓰기를 해주어야 합니다. 다른 언어에서는 대부분 '{'와 '}'를 사용하여 구문을 구분하지만 파이썬은 들여 쓰기로 구분을 합니다.

 

  PEP8에서는 이 들여 쓰기를 공백 4개를 사용하는 것으로 권장하고 있습니다. 추가적으로 첫 번째 줄에 인자가 있으면 인자에 맞춰 수직정렬을, 첫번째 줄에 인자가 없다면 추가적으로 들여 쓰기를 하여 구분되도록 하는 것을 권장하고 있습니다.

 

# 첫번째 줄 인자가 있다면 인자에 대한 수직정렬
foo = long_function_name(var_one, var_two,
                         var_three, var_four)

# 첫번째 줄 인자가 없다면 추가적인 들여쓰기를 사용
def long_function_name(
        var_one, var_two, var_three,
        var_four):
    print(var_one)

 

  이 외에도 몇 가지 경우에 대해서 이야기를 하고 있는데 이 부분은 사이트의 내용을 참고하시기 바랍니다.(처음 접하는 입장에서 다 설명하는 것보다는 가장 중요한 부분들만 먼저 이야기를 해보려고 합니다.)

 

 

 탭 또는 스페이스?(Tabs or Spaces?)

 

  들여 쓰기를 하기 위한 방법에는 '탭(Tab)' 키를 이용한 방법이나 '스페이스(Space)' 키를 이용하는 방법이 있는데 스페이스를 사용하는 것을 권장하고 있습니다. 그리고 무엇보다도 하나의 프로젝트 내에서 스페이스와 탭 키를 혼용해서 사용하는 것은 피해야 합니다.(눈으로 보았을 때는 문제가 없어 보여도 프로그램 실행 시 오류의 원인이 될 수 있습니다.)

 

 

 최대 라인 길이(Maximum Line Length)

 

  코드 한 줄의 최대 길이를 79자 이내로 하는 것을 권장하고 있습니다. 79자가 넘어갈 경우에는 백 슬러시(\)를 이용하여 줄 바꿈을 해주면 됩니다.

 

with open('/path/to/some/file/you/want/to/read') as file_1, \
     open('/path/to/some/file/being/written', 'w') as file_2:
    file_2.write(file_1.read())

 

  코드 길이가 길다고 해서 프로그램 동작에는 문제가 없지만 여러 사람이 같이 진행하는 프로젝트나 자신의 코드를 다른 사람이 볼 경우 가독성을 위해서 이 규칙도 지켜주는 것이 좋습니다.(특히 '+', '-', '*', '/' 등의 이항 연산자가 포함된 경우 이항 연산자 전에 줄바꿈을 해주는 것이 좋습니다.)

 

 

 빈 줄(Blank Lines)

 

  빈 줄은 클래스나 함수를 구분할 때 사용하여 구분을 하게 됩니다. 이때 함수와 클래스는 빈 줄 2개를 사용하여 구분하고 클래스 내의 메서드 정의는 빈 줄 1개로 구분을 하는 것을 권장하고 있습니다. 또한 함수 내의 연관성 있는 코드들을 구분할 때도 빈 줄을 사용하도록 권장하고 있습니다.

 

 

 Imports

 

  파이썬에서 코딩을 할 때 다양한 모듈을 사용할 경우가 많은데 이때 사용되는 것이 import입니다. 이 import를 사용하여 모듈을 참조할 때 한 줄에는 하나의 모듈만을 지정하는 것을 권장하고 있습니다.

 

# Correct:
import os
import sys

# Wrong:
import os, sys

# Correct:
from subprocess import Popen, PIPE

 

  이와 유사하지만 from ~ import를 이용하여 하나의 모듈에서 여러 함수를 사용할 경우에는 한 줄로 사용하는 것을 권장하고 있습니다.

 

 

 따옴표(""와 '')

 

  파이썬에서는 문자열을 나타낼 때 큰따옴표("")와 작은따옴표('') 모두를 사용할 수 있습니다. 어떤 것을 쓰는지에 대해서는 이야기하지 않지만 하나의 따옴표 내에서 따옴표를 추가적으로 사용해야 할 경우에는 다른 따옴표를 사용하는 것을 권장하고 있습니다. 이 규칙을 따르면 불필요한 백 슬러시(\)를 사용하지 않을 수 있습니다.

 

 

 Whitespace in Expressions and Statements

 

  이 부분은 연산식(Expressions)이나 문장(Statements)에서 공백을 어떻게 사용하는 것이 좋은지에 대한 가이드라인을 제시하고 있습니다. 불필요한 공백 사용을 방지하고, 효율적인 공백 사용으로 코드의 가독성을 높일 수 있도록 권장하고 있습니다. 이 부분은 공식 사이트에서 다양한 예시로 설명을 하고 있기 때문에 하나하나 따로 설명하지는 않으려고 합니다.

 

 

 그 외에 다양한 가이드라인들...

 

  위에서 언급한 가이드라인들 외에도 트레일링 콤마를 언제 쓰는지, 주석, Naming Conventions 등 전반적인 파이썬 코드 작성 가이드들을 PEP8에서 제시하고 있습니다. 코딩을 처음 배우는 입장에서는 이 정도만이라도 일단 봐 두고 가는 것이 좋을 것 같아서 언급을 해보았습니다.(자세히 다루지 않았던 부분들은 추후에라도 꼭 한번 공식 사이트에서 한번 보시길 바랍니다.)

 

  파이썬을 이용하여 프로그래밍을 하는 사람이 많아지게 되고, 프로젝트에서 여러 사람이 같이 코딩을 하게 된다면 서로서로 가이드라인을 지켜서 코딩을 하는 것이 중요할 것입니다. 처음 배울 때부터 이런 것들이 있다는 것을 알고 난 후 코딩을 배워나가는 것이 도움이 될 것이라고 생각하여 다루어 보았습니다.

 

  하지만 처음부터 이런 가이드라인을 지키며 코딩을 하기는 쉽지 않을 것입니다. 이를 도와줄 수 있는 파이썬 코드에 사용할 수 있는 정적 분석 툴들이 있는데 다음 글에서는 그중 하나에 대해서 알아보려고 합니다.

 

 

 

반응형