코드스타일가이드

코드스타일가이드

가는중 2023. 1. 5. 18:17

코드 스타일 가이드

들여쓰기


tab으로 (but 파이썬 코딩 스타일 가이드(PEP 8)에서는 공백 4칸으로 규정)

따옴표


  • 작은 따옴표(’)로 통일
  • 문자열 안에 작은 따옴표가 표함될 경우 쌍따옴표(”) 사용
text = 'string'

text = "I'm a student!"

Import


  • import먼저 선언 후 from impot 선언
  • abc 순으로 정렬
  • 가독성을 위해 같은 모듈끼리 붙여두고 다른 모듈끼리는 한칸 띄워서 구분
import numpy

import pandas

from django.db.models import Model, QuerySet
from django.http import HttpRequest, HttpResponse
from django.utils.translation import gettext_lazy as _

from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split

함수명


스네이크 케이스(snake_case) 여러 단어(소문자)로 이뤄진 단어 사이를 언더바로 나누는 방식

def funtion_name():
		pass

클래스명


파스칼 케이스(PascalCase)는 쌍봉낙타 표기법이라고도 하며 단어마다 첫 글자를 대문자로 표기하는 표기법

class ClassName():
		pass

변수명


  • 스네이크 케이스(snake_case) 사용
  • 변수명과 값 사이에 =의 앞뒤로 한칸씩 띄우기(공백)
total_num = 10 

<aside> 💡 단일 문자 'l' (소문자 엘), 'O' (대문자 오), 'I' (대문자 아이)는 변수에 작성X. (폰트에 따라 이러한 문자는 숫자 1또는 0과 구분하기 어려움)

</aside>

인자


  • 인자간 1칸씩 띄우기(공백)
  • 인자의 변수명과 변수값 사이에 ‘=’ 의 앞뒤에 공백X
  • 인자는 가급적 3개가 넘어가지 않게 (넘어가는 경우는 **kwargs 활용)
def f(a, b, c):
		print(a, b, c)

f(1, 2, 3)
		

#kwargs 활용 예시:
def f(**kwargs):
		pass

_dict = {
		'a': 1,	
		'b': 2,
		'c': 3,
		'd': 4
}

f(**_dict)

연산자


  • 다음의 이항 연산자는 양쪽에 항상 1개만 공백(띄우기/스페이스)을 추가.
    • 대입 연산자, 괄호대입 연산자, 비교 연산자, 불(Bool) 연산자 (and, or, not)
  • 우선순위가 다른 연산자를 다를 경우 우선 순위가 가장 낮은 연잔사의 양쪽에 공백(띄우기/스페이스)을 추가
i = i + 1

submitted += 1

x = x*2 - 1

hypot2 = x*x + y*y

c = (a+b) * (a-b)

Dictionary


# key, value가 하나일때:
_dict = {‘a’: a}

# 여러개일때:
_dict = {
		‘a’:  a,
		‘b’:  b,
}

# 빈 dict 선언:
_dict = {}

List


# 요소가 5개 미만일때:
_list = [1, 2, 3, 4, 5]

# 요소가 5개 이상일때
_list = [
		1, 2, 3, 4, 5,
		6, 7, 8, 9, 10
]

# 빈 list 선언:
_list = []

for, if


for, if 선언시 가독성을 위해서 줄바꿈 후 선언

_list = list()

for i in range(1, 11):

		if i % 2 == 1:
		    _list.append(i)

주석


  • 주석은 "#"과 띄어쓰기 1개로 시작
  • 코드위에 주석 다는 것으로 통일(인라인 X) 및 주석 위에 한 라인 띄우기
  • docstrings 경우 ‘’’ ‘’’ 사용 및 아래 줄바꿈 후 코드 작성
  • 코드를 변경한 경우 코멘트를 최신 상태를 반영
def f():
		''' 함수의 문서화 내용을 입력합니다. '''

		'''
		함수의 문서화 내용이 길어질경우,
		이런식으로 줄바꿈 후 이어서 작성
		'''
		
		# 인라인 주석 X
		total_num = 0
		
		# 주석위에 한칸띄우기
		quantity = 0

한줄 코드 길이


한줄의 코드 길이는 들여쓰기 띄워쓰기 포함 100자를 넘지 않게 작성 (넘어가는 것은 \ 로 줄바꿈후 작성)

new_nick_name_list = [
		nick_name \\
		for nick_name in nick_name_all_lsit \\
		if nick_name=='booooooo'
]

Bool형 비교


Bool형의 값을 True, False와 비교할 때 == 를 사용 X

status = True

# 올바른 작성법:
if status:

# 틀린 작성법(1):
if status == True:

# 틀린 작성법(2):
if status is True:

is, is not


not....is.....가 아닌, is not 연산자 사용

# 올바른 작성법:
if foo is not None:

# 틀린 작성법:
if not foo is None:

annotation


def f(name: str, opts: dict = {}) -> None:
	pass

 

 

 

반응형