변수명에서 _(밑줄)은 위치에 따라 다음과 같은 의미가 있습니다.
_single_leading_underscore: 내부적으로 사용되는 변수를 일컫습니다.
singletrailing_underscore: 파이썬 기본 키워드와 충돌을 피하려고 사용합니다.
double_leading_underscore: 클래스 속성으로 사용되면 그 이름을 변경합니다. (ex. FooBar에 정의된 boo는 _FooBar__boo로 바뀝니다.)
double_leading_and_trailing_underscore: 마술(magic)을 부리는 용도로 사용되거나 사용자가 조정할 수 있는 네임스페이스 안의 속성을 뜻합니다. 이런 이름을 새로 만들지 마시고 오직 문서대로만 사용하세요.
소문자 L, 대문자 O, 대문자 I는 변수명으로 사용하지 마세요. 어떤 폰트에서는 가독성이 굉장히 안 좋습니다.
모듈(Module) 명은 짧은 소문자로 구성되며 필요하다면 밑줄로 나눕니다.
모듈은 파이썬 파일(.py)에 대응하기 때문에 파일 시스템의 영향을 받으니 주의하세요.
C/C++ 확장 모듈은 밑줄로 시작합니다.
클래스 명은 카멜케이스(CamelCase)로 작성합니다.
내부적으로 쓰이면 밑줄을 앞에 붙입니다.
예외(Exception)는 실제로 에러인 경우엔 “Error”를 뒤에 붙입니다.
함수명은 소문자로 구성하되 필요하면 밑줄로 나눕니다.
대소문자 혼용은 이미 흔하게 사용되는 부분에 대해서만 하위호환을 위해 허용합니다.
인스턴스 메소드의 첫 번째 인자는 언제나 self입니다.
클래스 메소드의 첫 번째 인자는 언제나 cls입니다.
메소드명은 함수명과 같으나 비공개(non-public) 메소드, 혹은 변수면 밑줄을 앞에 붙입니다.
서브 클래스(sub-class)의 이름충돌을 막기 위해서는 밑줄 2개를 앞에 붙입니다.
상수(Constant)는 모듈 단위에서만 정의하며 모두 대문자에 필요하다면 밑줄로 나눕니다.
"""Base class for errors in the email package."""
raise ValueError('message')
가 (예전에 쓰이던) raise ValueError, 'message'
보다 낫습니다.