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
을 예로 들고 있다.