행궁동 데이터 엔지니어

반응형

*PEP (Python Enhancement Proposal) : Python을 개선하기 위한 제안서

 

PEP 중 8번 Style Guide for Python Code는 파이썬의 코드 스타일 가이드를 담고 있습니다. 

코드 작성 후 Black과 같은 코드 포맷터로 자동 포맷팅 할 수 있지만,

 

간결하고 가독성좋으며 오류가 적은 코드 작성을 위해 어떤 고민이 있었는지 알아보는 것이 의미 있다는 생각에 일부 정리해봤습니다.

 

기타 : 많은 프로젝트에는 그 프로젝트만의 코딩 스타일 가이드라인이 있고, PEP 8과 충돌이 발생할 경우, 해당 프로젝트의 코딩 스타일을 우선적으로 적용하는 것이 좋습니다.

 

이번 포스팅은 이항 연산자 위주로 정리해봤습니다.

1. Should a Line Break Before or After a Binary Operator? (이항 연산자 앞뒤로 줄 바꿈을 해야 할까?)

  • 이항 연산자(+, -, /, * 등)와 대응되는 피연산자가 가깝게 위치하도록 줄 바꿈 하는 것이 좋습니다.
  • 이항 연산자 다음에 줄 바꿈이 발생하면 코드를 보는 사람은 다음 줄을 찾아가야 하는 피로가 있습니다.
# 잘못된 예
# 연산자가 대응되는 피연산자로부터 멀리 떨어져 있다.
income = (gross_wages +
          taxable_interest +
          (dividends - qualified_dividends) -
          ira_deduction -
          student_loan_interest)
          
# 옳은 예:
# 연산자와 피연산자를 구별하기 쉽다.
income = (gross_wages
          + taxable_interest
          + (dividends - qualified_dividends)
          - ira_deduction
          - student_loan_interest)

2. Pet Peeves(짜증 나는 것들)

  • 항상 이항 연산자들 주위는 공백 한 칸으로 둘러싸야한다. 예) 할당 (=), 증강 할당(+=, -=, 등), 비교(==, <, >, !=, <>, <=, >=, in, is not), 불린(and, or, not)
  • 우선순위가 다른 여러 연산자를 동시에 사용한다면, 우선순위가 낮은 연산자 주위에 공백을 고려하는 것이 좋습니다.
# 잘못된 예:
i=i+1
submitted +=1
x = x * 2 - 1
hypot2 = x * x + y * y
c = (a + b) * (a - b)​

# 옳은 예:
i = i + 1
submitted += 1
x = x*2 - 1  # 우선 순위가 낮은 - 연산자주위로 공백을 생성
hypot2 = x*x + y*y
c = (a+b) * (a-b)
  • 슬라이스 내에서의 연산자
# 잘못된 예
ham[1: 9], ham[1 :9], ham[1:9 :3]
ham[lower : upper]
ham[lower + offset:upper + offset]

# 옳은 예:
ham[1:9], ham[1:9:3], ham[:9:3], ham[1::3], ham[1:9:]
ham[lower:upper]
ham[lower+offset : upper+offset]

 

다음에는 오류 방지를 위한 startwith(), isinstance()와 같은 프로그래밍 권장사항에 대해 정리해보겠습니다.

혹시 궁금하신 사항은 댓글 남겨주세요.

 

감사합니다.

 

참고자료

1. [PEP 8 한국어 번역], https://zerosheepmoo.github.io/pep8-in-korean/docguide/
2. [PEP 8 공식문서], https://www.python.org/dev/peps/pep-0008/

 

반응형

이 글을 공유합시다

facebook twitter kakaoTalk kakaostory naver band