python

TIL230322 Python Coding Convention

베스트오버 2023. 3. 22.

Coding Convention

프로그램 코드를 작성할 때 우리끼리의 약속같은 개념이다.

함수와 함수 사이엔 2줄을 띄운다 등의 약속

 

왜 통일을 해야하나?

혼자 프로그래밍을 할 경우 이게 어떻게 돌아가는 지 이해하고 쓸 수 있겠지만

같이 일하는 동료나 리뷰어, 미래의 내가 쉽게 이해하고 쓸 수 있도록 해야한다.

 

예를들어, '더하기'라는 함수를 만들었는데 이 함수 이름이 'minus' 나 'a'라고 해보자.

프로그램이 당장은 올바르게 작동은 하겠지만 수정하거나 확인 할 때 추론하면서 이해하는게 피곤하고 짜증나는 일이다.

이해하기 쉽게 'add'라고 쓰는 것이다.

 

이런 습관을 들여야 더 나은 품질의 코드를 작성하는 데에도 도움이 되고 가독성 좋은 훌륭한 프로그래머라고 볼 수 있다.

 

프로젝트마다 코딩 컨벤션이 다르겠지만 파이썬은 대표적으로 PEP 8이 대표적이다.

 

PEP (Python Enhance Proposal)

Python을 개선하기 위한 개선 제안서, Python 코드용 스타일 가이드

 

naming

클래스, 함수, 변수 등을 네이밍 할 때 이름만 보고도 추측이 가능해야 한다.

 

변수 (variable)

Snake 표기법

my_name_is_python = "My name is Python"

함수 (function)

Snake 표기법

def my_name_is_python():
	pass

Class

Pascal 표기법

더보기

camel case 라고 지칭하는 경우가 있는데

첫 번째 문자만 소문자로 하는 경우를 Lower Camel Case라고 하고

첫 번째 문자가 대문자로 시작하는 경우를 Upper Camel Case라고 한다.

  • 내부적으로 쓰이면 _을 앞에 붙인다.
class MyNameIsPython:
	pass

상수 (constants)

상수는 대문자

PIE = 3.14

list

numbers = [1, 2, 3, 4]
number_list = [1, 2, 3, 4, 5]

for number in numbers:
	pass

packages, modules

  • 모듈 이름은 짧고 모두 소문자
  • 가독성을 향상시키는 경우 모듈 이름에 밑줄 사용 가능 (권장하지 않음)

 

code lay-out

  • 들여쓰기는 줄당 공백 4칸!
  • 탭은 들여쓰기된 코드와 일관성을 유지하기 위해서만 사용!
  • 탭과 공백을 혼합하는 것을 허용하지 않는다!
  • 최상위(top-level) 함수와 클래스 정의는 2줄씩 띄어 쓴다!
  • 클래스 내의 메소드 정의는 1줄씩 띄워 쓴다!
  • 모든 줄을 최대 79자로 제한!
  • 이진 연산자 앞이나 뒤에 중단하는 것이 허용!
  • (다만, 수학의 전통을 따르는 게 가독성이 더 높음) - 이진 연산자를 앞에 두자!

 

PEP 8 Check Module

설치

    $ pip install pep8

댓글