NLP Blog

이펙티브 파이썬 - 2. PEP 8 스타일 가이드를 따르자

|

2. PEP 8 스타일 가이드를 따르자

  • Python Enhancement Proposal #8 , PEP8은 파이썬 코드의 스타일 가이드
    • 문법만 지킨다면 어떻게 코딩하던 에러는 뜨지 않음
    • 하지만 일관성 있는 스타일을 사용한다면
      • 유지보수가 쉬워짐
      • 가독성 높아짐
      • 프로젝트에서의 협업도 가능
  • 파이썬의 진화에 따라 PEP 8도 지속적으로 업데이트 되는중임

  • 중요한 몇가지만 살펴보면….

화이트 스페이스

  • 파이썬에서 공백은 문법적으로 의미있음, 그러므로 영향에 민감한 편

  • 이 아닌 스페이스로 들여쓴다. (vim이나 ide에서 tab을 누르면 4 space로 되도록 설정가능)
  • 문법적으로 의미 있는 들여쓰기는 각 수준마다 스페이스 네 개 사용
  • 한 줄의 문자 길이가 79자 이하여야 함
  • 표현식이 길어서 다음 줄로 이어지면 일반적인 들여쓰기 수준에 추가로 스페이스 네 개를 사용
  • 파일에서 함수와 클래스는 빈 줄 두 개로 구분해야 한다
  • 클래스에서 메서드는 빈 줄 하나로 구분
  • 리스트 인덱스, 함수 호출, 키워드 인수 할당에는 스페이스를 사용하지 않는다
    • ex)
a[0:10] # a는 리스트, 리스트 인덱싱시 : 양 옆에 no space
foo = bar(foo=bar) # 키워드 인수 할당, 함수호출
  • 변수 할당 앞뒤에 스페이스를 하나만 사용한다 (a = 10)


naming

  • PEP 8은 언어의 부분별로 독자적인 명명 스타일을 제안, 각 이름에 대응하는 타입 구별이 쉬움

  • 함수, 변수, 속성lowercase_underscore 형식을 따름
  • protected 인스턴스 속성은 _leading_underscore 형식을 따름
    • protected : getter and setter로 함부로 값을 조회하거나 바꿀수 없도록 보호해 놓은 , 같은 클래스, 패키지, 자손 클래스에서만 접근 가능
  • private 인스턴스 속성은 __double_leading_underscore 형식을 따름
    • private : 같은 클래스 내에서만 접근 가능
  • 클래스예외CapitalizedWord 형식을 따름
  • 모듈 수준 상수ALL_CAPS 형식을 따름
  • 클래스의 인스턴스 메서드에서는 첫 번째 파라미터(해당 객체를 참조)의 이름을 self로 지정
  • 클래스의 메서드에서는 첫 번째 파라미터(해당 클래스를 참조)의 이름을 cls로 지정
    • 클래스 메서드, 인스턴스 메서드 : 인스턴스 메서드의 경우는 그 메서드를 실행한 인스턴스에만 영향을 미치지만, 클래스 메서드를 사용하면 그 클래스로 인해 만들어진 모든 인스턴스에 영향이 간다.


표현식과 문장

  • 파이썬의 계명에는 “어떤 일을 하는 확실한 방법이 (될 수 있으면 하나만) 있어야한다” 라는 말이 있음
  • PEP 8은 표현식과 문장의 본보기로 이 스타일을 정리

  • 긍정 표현식의 부정 (if not a is b) 대신에 인라인 부정(if a is not b)를 사용
  • 길이를 확인할 때 == 사용 안함, 빈 값은 암시적으로 False가 된다고 가정
    • if len(list) == 0 대신 if not somelist
    • 값이 비어있지 않으면 True가 됨
  • 한 줄로 된 if 문, for와 while loop, except 복합문 ㄴㄴ
    • 여러 줄로 나누어서 명료하게 작성
  • 항상 파일의 맨 위에 import
  • 모듈을 임포트할 때는 모듈의 절대이름 사용!
    • 현재 모듈 경로를 기준으로 상대 경로 ㄴㄴ
    • bar 패키지의 foo 모듈을 임포트하려면 import foo ㄴㄴ. from bar import foo ㅇㅇ
  • 상대적인 임포트를 해야 한다면 명시적인 구문 사용 from . import foo
  • 임포트는 표준 라이브러리 모듈 > 서드파티 모듈 > 자신이 만든 모듈 순으로 구분
    • 각각의 섹션에서는 알파벳 순으로 임포트



  • 핵심정리
    • 파이썬 코드를 작성할 때 항상 PEP 8 스타일 가이드를 따르자
    • 큰 파이썬 커뮤니티에서 다른 사람과 원활하게 협업하려면 공통된 스타일을 공유해야 한다.
    • 일관성 있는 스타일로 작성하면 나중에 자신의 코드를 더 쉽게 수정할 수 있다.

Comments