퐈니썬's LIfe - 잘 실패하자 RSS 태그 관리 글쓰기 방명록
PEP8 (1)
2021-07-01 10:17:46
728x90
반응형

00. 서문

프로그래밍을 할 때, 특히 협업을 통한 코드 공유가 있을때는 좋은 코드와 나쁜 코드라는 것이 있다고 생각합니다. 코드의 구조가 파악하기 쉽다면 협업을 할 때에도 효율적으로 업무를 진행 할 수 있습니다.

코드 작성하는 스타일에 "정답은 없지만", 잘못된 작성법은 있다고 생각합니다. 즉, 코드 구조를 파악하기가 어려운 코딩 스타일이 겠죠.

이를 막기 위해서는 여러가지 파이썬 코드 작성 가이드가 있습니다.

이 중 가장 대표격인 PEP8을 정리해보겠습니다.

 

PEP 8

  • 파이썬 개선 제안서, 파이썬 코드를 어떻게 구상할 지 알려주는 스타일 가이드
  • 다른 사람과 원활하게 협업하려면 공통된 스타일 공유가 필요
  • 일관성 있는 스타일은 나중에 수정하기도 쉽다.

01. 들여 쓰기

  • 들여쓰기 공백은 스페이스 4칸으로 사용합니다.
  • 연속적 라인에 대하여 구분되도록 정렬
#Correct
def long_function_name(
        var_one, var_two, var_three,
        var_four):
    print(var_one)

#Wrong

def long_function_name(
    var_one, var_two, var_three,
    var_four):
    print(var_one)

01.2. tap or space?

  • "스페이스" 사용을 권장합니다.
  • 스페이스와 탭의 혼용을 지양합니다.

01.3. 최대 라인 글자 수

  • 한 라인 (줄) 코드에 대하여 79자 이내로 작성할 것을 권장합니다.

01.4. 연산자 위치

  • 가독성을 위하여, 연속적인 라인에서 연산자는 문장 시작부에 작성 할것을 권장합니다.
#Correct
income = (gross_wages
          + taxable_interest
          + (dividends - qualified_dividends)
          - ira_deduction
          - student_loan_interest)

#Wrong
income = (gross_wages +
          taxable_interest +
          (dividends - qualified_dividends) -
          ira_deduction -
          student_loan_interest)

01.5. 빈 줄 생성

  • 2줄: top-level function (최상위 함수), 클래스 작성 후에 권장합니다.
  • 1줄: 클래스의 메소드간의 간격에 권장합니다.

01.6. 함수 임포팅

  • 한줄에 하나의 함수를 호출하기를 권장합니다.

02. 불필요한 공백 줄이기

  • 리스트, 인덱스, 함수호출, 키워드 인수할등 등에는 스페이스를 사용하지 않도록합니다.
  • "," 과 ";" 의 구분자들 뒤에 한번의 스페이스 사용을 권장드립니다. (앞에 사용 x)
  • 소괄호, 중괄호, 대괄호 사이에 추가 공백을 사용하지 않도록합니다.
#Correct
spam(ham[1], {eggs: 2})
foo = (0,)
if x == 4: print x, y; x, y = y, x

#Wrong
spam( ham[ 1 ], { eggs: 2 } )
bar = (0, )
if x == 4 : print x , y ; x , y = y , x

03. 주석

03.1. 주석 블록

  • 일반적으로 뒤에 오는 코드 일부나 전체에 대한 내용을 작성합니다.

03.2. 인라인 주석

  • 인라인 주석의 경우 불필요한 경우 사용을 지양합니다.
  • 코드가 명백하지 않을 경우만 사용합니다.
x = x + 1                 # Increment x

04. 네이밍

  • 기본적으로 혼란을 주는 문자사용을 지양합니다. (ex 대문자 I와 소문자 L)

04.1. 패키지, 모듈 네이밍

  • 모듈이름은 간결하고 소문자 사용을 권장합니다.
  • 가독성을 위해 "_" (underscores) 사용을 권장합니다.
  • ex) main.py, main_function.py

04.2. 클래스 네이밍

  • 클래스는 Capitalized 형식(첫자만 대문자)을 권장합니다.
  • 예외처리 또한 클래스와 동일하므로 동일하게 네이밍 하도록 합니다.
  • ex) MainClass

04.3. 상수, 변수 , 함수, 메서드 네이밍

  • 함수, 변수 (클래스 속성포함), 메소드는 소문자, "_" (underscores) 사용을 권장합니다.
    • 보호(protected) 인스턴스 속성: 맨앞에 '_'를 붙여줍니다.
    • 비공개(private) 인스턴스 속성: 맨앞에 '__' 를 붙여줍니다.
    • 스페셜 인스턴스 속성: 앞뒤에 '__' 를 붙여줍니다.
  • 모듈에서 정의되는 상수는 대문자를 사용합니다.

 

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

 

728x90
반응형

'Programming > Python' 카테고리의 다른 글

파이썬 *arg 와 **kwargs 이해 하기  (0) 2022.03.11
파이썬 f-string  (0) 2021.12.31
파이썬 모듈이란? 패키지란?  (0) 2021.07.01
파이썬 클래스 상속  (0) 2021.06.28
numpy flip을 활용한 DICOM 이미지 반전 대칭  (0) 2021.06.25