- [BW 2] PEP 8 스타일 가이드를 따르라2024년 10월 22일
- 31514
- 작성자
- 2024.10.22.:55
💡 PEP 8 : 파이썬 코드를 어떤 형식으로 작성할지 알려주는 스타일 가이드
PEP 8의 장점
- 코드에 더 친숙하게 접근하고, 가독성이 좋아진다.
- 다른 파이썬 프로그래머들과 쉽게 협력할 수 있다.
공백
- 탭 대신 스페이스를 사용해 4칸 들여쓰기하라.
- 라인 길이는 79개 문자 이하여야 한다.
- 긴 식을 다음 줄에 이어서 쓸 경우에는 4칸 들여쓰기하라.
- 파일 안에서 각 함수와 클래스 사이에는 빈 줄을 두 줄 넣어라.
- 클래스 안에서 메서드와 메서드 사이에는 빈 줄을 한 줄 넣어라.
- 딕셔너리에서 키와 콜론(:) 사이에는 공백을 넣지 않고, 콜론 다음에 빈 칸을 넣고 값을 넣어라.
- 변수 대입에서 = 전후에 빈 칸을 넣어라.
- 타입 표기를 덧붙이는 경우에는 변수 이름과 콜론 사이에 공백을 넣지 않도록 주의하고, 콜론과 타입 정보 사이에는 빈 칸을 넣어라.
명명 규약
- 함수, 변수, attribute는 소문자와 밑줄을 사용한다.
- 보호해야 하는 인스턴스 attribute는 일반적인 attribute 이름 규칙을 따르되, 밑줄로 시작한다.
- private 인스턴스 attribute는 일반적인 attribute 이름 규칙을 따르되, 밑줄 두 개로 시작한다.
- 클래스, 예외는 여러 단어를 이어 붙이되, 각 단어의 첫 글자를 대문자로 만든다.
- 모듈 수준의 상수는 모든 글자를 대문자로 하고 단어와 단어 사이를 밑줄로 연결한다.
- 클래스에 들어 있는 인스턴스 메서드는 호출 대상 객체를 가리키는 첫 번째 인자의 이름으로 반드시 self를 사용해야 한다.
- 클래스 메서드는 클래스를 가리키는 첫 번째 인자의 이름으로 반드시 cls를 사용해야 한다.
식과 문
- 긍정적인 식을 부정하지 말고 부정을 내부에 넣어라.
- if not a is b → if a is not b
- 빈 컨테이너나 시퀀스를 검사할 때는 길이를 0과 비교하지 말고 not을 사용해라.
- if len(arr). == 0 → if not arr
- 비어 있지 않은 컨테이너 시퀀스를 검사할 때도 마찬가지다.
- if len(arr) > 0 → if arr
- 한 줄짜리 if 문이나 for, while루프, except 복합문을 사용하지 말라.
- 식을 한 줄 안에 다 쓸 수 없는 경우, 식을 괄호로 둘러싸고 줄바꿈과 들여쓰기를 추가해서 읽기를 쉽게 만들라.
- 여러 줄에 걸쳐 식을 쓸 때는 줄이 계속된다는 표시를 하는 \ 문자보다는 괄호를 사용하라.
임포트
- import 문을 항상 파일 맨 앞에 위치시켜라.
- 모듈을 임포트할 때는 절대적인 이름을 사용하고, 현 모듈의 경로에 상대적인 이름은 사용하지 말라.
- import fool → from bar import fool
- 반드시 상대적인 경로로 임포트해야 하는 경우에는 from . import foo처럼 명시적인 구문을 사용하라.
- 임포트를 적을 때는 다음 과 같은 순서를 지키고 각 섹션은 알파벳 순서로 임포트하라.
- 표준 라이브러리 모듈
- 서드 파티 모듈
- 사용자 지정 모듈
파이린트(Pylint) 도구를 사용하면 PEP 8 스타일 가이드를 자동으로 실행해준다.
'Book > 파이썬 코딩의 기술' 카테고리의 다른 글
[BW 8] 여러 이터레이터에 대해 나란히 루프를 수행하려면 zip을 사용하라 (0) 2024.10.22 [BW 7] range보다는 enumerate를 사용하라 (3) 2024.10.22 [BW 6] 인덱스를 사용하는 대신 대입을 사용해 데이터를 언패킹하라 (0) 2024.10.22 [BW 5] 복잡한 식을 쓰는 대신 도우미 함수를 작성하라 (0) 2024.10.22 [BW 4] f-문자열을 통한 인터폴레이션 (2) 2024.10.22 다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)