728x90

공백

- 스페이스로 들여쓰기 (탭, 공백 혼합 금지)

- 들여쓰기는 스페이스 네 개 사용

- 한 줄의 문자 길이 79자 이하

- 표현식이 길어 다음 줄로 내려쓰는 경우 추가 들여쓰기 사용

- 파일에서 함수와 클래스는 빈 줄 두 개로 구분, 클래스에서 메서드는 빈 줄 하나로 구분

class MyClass:
    def __init__(self):
        self.data = []

    def my_method(self):
        # Some code here
        pass


def my_function():
    # Some code here
    pass

- 리스트 인덱스, 함수 호출, 키워드 인수 할당에는 스페이스 사용하지 않음

- 할당( = ), 증분 할당( +=, -= 등), 비교( ==<>!=<><=>=innot inisis not), Booleans (andornot)과 같은 이항 연산자는 항상 양쪽에 하나의 공백으로 둘러쌈 ( i = i + 1, c = (a+b) * (a-b) )

- 불필요한 공백 사용하지 않음

 

명명규칙

- 함수, 변수, 속성은 lowercase_underscore 형식

- 보호 인스턴스 속성은 _leading_underscore 형식

- 비공개 인스턴스 속성은 __double_leading_underscore 형식

- 클래스와 예외는 CapitalizedWord 형식

- 모듈 수준 상수는 ALL_CAPS 형식

- 클래스의 인스턴스 메서드(instance method)에서는 첫 번째 파라미터(해당 객체 참조)의 이름을 self로 지정

- 클래스 메서드(class method)에서는 첫 번째 파라미터(해당 객체 참조)의 이름을 cls로 지정

 

표현식과 문장

- 긍정 표현의 부정(if not a is b) 대신 인라인 부정(if a is not b) 사용

- 길이를 확인하여 빈 값을 확인하지 않음 (if len(somelist)==0)

  if not somelist를 사용하고, 빈 값은 암시적으로 False가 된다고 가정

- 길이를 확인하여 비어있지 않은 값을 확인하지 않음 (if len(somelist)!=0)

  if somelist를 사용하고, 비어있지 않은 값은 암시적으로 True가 된다고 가정

- 한 줄로 된 if 문, for와 while 루프, except 복합문을 쓰지 말고 여러 줄로 나눠서 명료하게 작성

 

임포트 규칙

- 항상 파일의 맨 위에 import 문을 놓음

- 모듈을 import 할 때는 항상 모듈의 절대 이름을 사용하며 현대 모듈의 경로를 기준으로 상대 경로로 된 이름을 사용하지 않음

  예를들어 bar 패키지 안의 foo 모듈을 임포트할 때는 import foo 가 아닌 from bar import foo 라고 해야함

- 상대적인 임포트를 해야 한다면 명시적인 구문을 써서 from . import foo 로 작성

- 임포트는 '표준 라이브러리 모듈, 서브파티 모듈, 자신이 만든 모듈' 섹션 순으로 구분해야 함

  각각의 하위 섹션에서는 알파벳 순서로 임포트

 

참고 사이트

- https://peps.python.org/pep-0008/

 

 

728x90

+ Recent posts