-
[python#tip] PEP8- code styleProgramming 기초/Python 2023. 7. 26. 23:50
네이버 부스트코스 코칭스터디 12기 <Python 4 Everybody 2023>에 리드부스터로 참여하고 있다. 팀원들과 매주 미션을 해결하면서 받았던 코치님의 피드백 중에 PEP8이라는 코드 스타일을 연습해볼 것을 추천해주셨다.
해서, PEP8을 공부하고 여기에 정리하고자 한다.
아래 노션에 나머지 부분을 정리했다.
https://mud-gorilla-c43.notion.site/PEP8-bcae91a5d0b54b9892e1ab21a891512a?pvs=4
*PEP8
대부분의 경우 실무에서는 팀 프로젝트로 진행된다. 그렇기에 코드를 작성할 때 약속이 정해져있으면 가독성을 높이고 효율을 높일 수 있다(유지보수의 측면에서 특히 효율적일 것.). 그런 약속이 '코드 스타일'이다. 언어마다 다르지만 파이썬은 PEP8이라는 코드 스타일을 준수하도록 가이드한다. (계속 추가 예정)
https://peps.python.org/pep-0008/#id6
PEP8 공식 문서를 보면 서문에 아래와 같은 말이 있다.
A Foolish Consistency is the Hobgoblin of Little Minds
자신만의 코드 스타일을 고집하지 말자. 협업에서 무엇보다 중요한 것은 소통이고, 소통을 위해선 서로의 언어가 통해야 한다.
* Code Lay-out
1. 왼쪽 들여쓰기(hanging indents) : arguments가 길어져서 줄바꿈(개행)시 (parenthesis)의 시작 괄호에 맞춰 수직정렬을 하는 것이 좋다. 용어 참고- brace{} bracket[ ] parenthesis()
# Correct: # Aligned with opening delimiter. foo = long_function_name(var_one, var_two, var_three, var_four) # Add 4 spaces (an extra level of indentation) to distinguish arguments from the rest. def long_function_name( var_one, var_two, var_three, var_four): print(var_one) # Hanging indents should add a level. foo = long_function_name( var_one, var_two, var_three, var_four)
2. tab vs 4-space : tab을 사용하던 4-space를 사용하던 하나로 일관되게 적어야하고, tab은 에디터에 종속되어 있어서, 코드의 신뢰성 측면에서 4-space를 권장한다. (4-space를 사용하는 사람들이 훨씬 많다고 한다.)
3. 행의 길이를 79자로 제한하는 것이 좋다. 시각적 구조를 일관되게 유지하고 가독성을 높이기 위함이다.
4. 연산자가 맨 앞에 오게 개행하자.
# Correct: # easy to match operators with operands income = (gross_wages + taxable_interest + (dividends - qualified_dividends) - ira_deduction - student_loan_interest)
5. 빈 줄의 사용 : 클래스 내의 각 메서드 위 아래에 빈 줄이 한 줄씩 들어간다. logical sections을 명시하는 것.
6. 소스파일 인코딩시 기본적으로 UTF-8로 인코딩할 것.
7. import시 다른 모듈을 한 줄에 임포트하지 말 것.
# Correct: import os import sys # Wrong: import sys, os # Correct: from subprocess import Popen, PIPE
8. import 시 와일드 카드 * 사용을 지양할 것. from <module> import * 지양.
* 참고
https://velog.io/@toezilla/1D1Q-003.-들여쓰기를-할-때-왜-space가-tab보다-권장될까
'Programming 기초 > Python' 카테고리의 다른 글
[python] 기억해 둘 파이썬 문법&개념 (0) 2023.08.19 [Python] return self는 method chaining을 위함이다. (0) 2023.08.05 [Python 자료구조 #고급정렬3] 기수 정렬(radix sort), 카운팅 정렬(counting sort), 팀 정렬(Timsort) (0) 2023.06.02 [Python 자료구조 #고급정렬2] 병합정렬(merge sort), 퀵 정렬(quick sort), 이중피벗 퀵 정렬(dual pivot quick sort) (0) 2023.06.01 [Python 자료구조 #고급정렬1] 셸 정렬(shell sort), 힙 정렬(heap sort) (0) 2023.06.01