Pep-8

Python underscore 관련 naming convention

파이썬에는 PEP-8이라는 Python Code Style Guide가 있다. 모든 내용을 한 번에 정리하기 어려워서 그냥 코딩하다가 궁금한 것 위주로 정리해 보려고 한다.

이번 글에서는 ‘_’(Underscore)가 붙는 변수나 메서드에 관련한 내용을 정리하려고 한다.

Trailing underscore

  • _single_leading_underscore: 이런 경우 from M import *에서는 _로 시작하는 object를 import 하지 않는다.
  • single_trailing_underscore_: 파이썬 언어 내에서 사용되는 키워드와의 충돌을 피하기 위해 작성한다. BeautifulSoup에서 HTML의 class를 기준으로 무언가를 찾을 때 class_와 같이 속성을 지정해 줄 때가 있다.
  • __double_leading_underscore: 클래스 속성의 이름을 정할 때 name mangling을 피한다. 아래에 그 예가 있으니 참고하면 될 것 같다.
  • __double_leading_and_trailing_underscore__: 사용자가 컨트롤하는 네임스페이스에 있는 “magic” object나 속성이다. 예를 들어 __init__, __import__, __file__등이 있다. 이러한 이름을 새로 만들 일은 거의 없을 것 같다.

Package and Module Names

파이썬 모듈에서 C나 C++로 작성한 확장 모듈을 이용할 때, C나 C++ 모듈은 앞에 _를 하나 붙여준다. PEP-8 문서에서는 _socket을 예로 들고 있다.