파이썬 네이밍 규칙을 한번에 알 수 있도록 보기 쉽게 정리한다. 네이밍 규칙을 지키지 않은 코드는 일관성이 사라지고 누가봐도 가독성이 떨어지게 된다. 파이썬 코딩을 할때 지켜야할 몇가지 규칙을 간단히 정리하였으니, 최소한 이정도는 지키도록 습관을 들이자.
코딩 규칙
들여쓰기 : 4칸 (스페이스)
파이썬에서 들여쓰기는 4칸을 기준으로 한다. 이때 탭(Tab)이 아닌 스페이스(Space)를 사용한다.
def even_odd(num):
print(num)
if a % 2 == 0:
print('even')
else:
print('odd')
even_odd(10)
그리고 아래와 같은 경우 세로라인에 맞추도록 한다.
# 잘못된 예
foo = long_function_name(var_one, var_two,
var_three, var_four)
# 올바른 예
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)
# 올바른 예
# 함수 인자와 함수 내용을 구분할 수 있음
def long_function_name(
var_one, var_two, var_three,
var_four):
print(var_one)
최대 라인 길이 : 79글자
최대 라인 길이는 79글자이다. 그 이유는 가독성때문이다.
소스 코드를 좁은 화면에서도 가로 스크롤이 필요 없이 볼 수 있어야 한다. 에디터에서 세로로 창을 분할해서 2개 파일을 보는 상황이나, github나 코드리뷰 툴 등에서 코드를 볼 때 가로 스크롤이 없어야 코드를 보기 수월하다.
코드를 볼 일이 나 혼자밖에 없다고 하더라도 이 규칙은 지켜주면 코딩을 할 때도 가독성이 늘어나기 때문에 편리하다.
이항 연산자 줄바꿈
길이가 긴 연산식을 써야될 경우 가독성을 위해 아래의 코드와 같이 연산자를 다음 라인의 앞에 넣는다.
income = (gross_wages
+ taxable_interest
+ (dividends - qualified_dividends)
- ira_deduction
- student_loan_interest)
빈라인
- 최상위 레벨의 함수나 클래스 정의 앞에 빈라인 2줄
- 클래스 메쏘드 정의 앞에 빈라인 1줄
- 함수 내에서 로직을 구분하기 위해 빈라인 1줄
import sys
class Monster:
def walk(self):
print('walk')
def attack(self):
# logic A
...
# logic B
...
import
모듈별로 라인 구분을 구분한다.
# 잘못된 예
import os, sys
# 올바른 예
import os
import sys
from subprocess import Popen, PIPE
import 순서
import 하는 순서는 아래 그룹의 순서대로 하며, 각 그룹마다 빈라인을 한줄 추가하여 구분한다.
- 표준 라이브러리
- third party 라이브러리
- 로컬 라이브러리
# 표준 라이브러리
import os
import sys
#Third Party 라이브러리
import numpy
#로컬 라이브러리
from mypackage import example
from mypackage.myclass import MyClass
와일드카드 import는 피하자. 네임스페이스에 혼돈을 줄 수 있다.
# 와일드카드(wildcard) import는 비추천
from <moduel> import *
모듈 Dunder name
dunder는 double underscore의 줄임말로 __name__와 같이 double underscore(__)로 둘러싸인 모듈 레벨의 정보를 주기 위한 값이다. Dunder name은 docstring과 import 사이에 위치시켜준다.
"""This is the example module.
This module does stuff.
"""
from __future__ import barry_as_FLUFL
__all__ = ['a', 'b', 'c']
__version__ = '0.1'
__author__ = 'Cardinal Biggles'
import os
import sys
문자열 따옴표
- 홑따옴표(' '), 쌍따옴표(" ") 모두 사용 가능하다.
네이밍 규칙
파이썬의 네이밍 규칙을 알아보자. 아래 규칙만 지켜줘도 매우 깔끔하게 통일된 코드를 만들 수 있게 된다.
참고로 아래에 밑줄(_) 사용 가능 규칙은 모두 가독성이 더 좋아진다면 사용해도 된다는 것을 의미한다. 그 말은 즉 밑줄을 사용하지 않아도 가독성이 보장된다면, 굳이 밑줄을 사용하지 말라는 얘기이다.
패키지 / 모듈 이름 (Package / Module)
아래 3가지 규칙만 지키면 된다.
- 짧아야한다. (short)
- 모두 소문자 (lowercase)
- 가독성이 더 좋다면 밑줄 (_) 사용 가능 (underscore)
규칙은 매우 명확하다. 모두 소문자로 짧게 만들면 된다.
밑줄도 가능하면 넣지 말자. 2개 단어의 조합이면 대부분의 사람들이 밑줄을 넣고 싶을 것이다. 하지만 굳이 없어도 이상하지 않다면 빼도 된다. 파이썬의 표준 라이브러리를 보면 위의 3가지 규칙을 지키고 있는 모습을 볼 수 있다.
파이썬 표준 라이브러리 패키지
string - 문자열 처리
math - 수학 함수
email - 이메일 처리 패키지
json - JSON 인코딩/디코딩
html - HTML 지원
smtplib - SMTP 클라이언트
ipaddress - IPv4/IPv6 관련 라이브러리
zipfile - ZIP 압축 관련 처리
파이썬 표준 라이브러리 패키지는 밑줄(_)을 사용하지 않는다. 짧고 간단한 단어로 표현하며, 2개 단어의 조합인 경우에도 밑줄없이 간결하게 붙여서 네이밍을 하였다.
패키지/모듈 네이밍의 가장 좋은 예제가 바로 파이썬 표준 라이브러리이다.
Class 이름
Class 이름은 CamelCase를 따른다. 모듈/패키지 이름과는 다르게 대소문자를 모두 사용한다.
class MyClass:
pass
아마도 대부분의 사람들이 본능적으로 class 이름은 CamelCase 형식으로 만들고 싶을 것이다. 본능대로 하면 된다.
함수 / 변수 이름 (Function / Variable)
함수와 변수 이름은 아래 규칙을 가진다.
- 소문자 (lowercase)
- 밑줄(_) 사용 가능 (underscore)
패키지/모듈 이름규칙과 동일하다. 함수나 변수명도 되도록이면 짧을수록 좋긴하지만, 아무래도 무조건 짧게하는 것보다는 의미를 명확하게 표현해야하므로 짧아야한다는 규칙은 굳이 넣지 않은 것 같다.
# 함수 이름 예
def loaddata(data):
def convert_from_strin(data):
# 변수 이름 예
username = ''
userid = ''
user_name = ''
user_id = ''
메쏘드 / 인스턴스 변수 이름 (Method / Instance Variable)
기본적으로 아래의 규칙을 가진다.
- 소문자 (lowercase)
- 밑줄(_) 사용 가능 (underscore)
- public이 아닌 메쏘드와 인스턴스 변수에 대해서는 앞에 밑줄(_)을 추가한다.
파이썬의 Class에서는 명시적으로 public, protected, private 속성이 없다. 이것을 구분해주기 위해 아래와 같이 네이밍 규칙을 적용한다.
Class가 상속되는 것을 고려하여보자. 참고로 protected 속성은 외부에서 접근 불가능하지만, 상속되는 Child Class에서 접근 가능한 속성을 의미한다.
기본적으로 public이 아닌 속성들은 이름 앞에 밑줄(_)을 붙인다.
- public: 메쏘드 / 변수 이름 그대로 사용한다.
- protected: 메쏘드 / 변수 이름 앞에 밑줄(_)을 1개 붙인다.
- private: 메쏘드 / 변수 이름 앞에 밑줄(__)을 2개 붙인다.
class Animal:
# public variable
name = ''
# protected variable
_texture = None
# private variable
__version = '1.0.0'
# public method
def draw(self):
# protected method
def _get_texture(self):
# private method
def __get_version(self):
상수 (Constant)
- 모두 대문자
- 밑줄(_) 사용
TOTAL = 10
MAX_NUMBER = 20
'개발' 카테고리의 다른 글
Kivy MatrixInstruction을 이용한 원근 변환 문제 및 해결법 (0) | 2024.08.19 |
---|---|
파이썬 Kivy: weakly-referenced object no longer exists 예외 상황 (0) | 2024.08.14 |
tkinter - 파이썬 GUI 라이브러리 사용법 (0) | 2024.06.19 |
Python 한번에 배우기 - 필수 문법 요약 정리 (0) | 2024.01.23 |
내컴퓨터에 워드프레스 설치 후 마음껏 테스트해보기 (3) | 2023.08.26 |
댓글