파이썬 - 변수 및 함수 이름에 대한 Python의 명명 규칙은 무엇입니까?




파이썬 클래스 주석 (8)

@ 존 TESlade가 대답 한 것에 더 가깝다. Google의 파이썬 스타일 가이드 에는 꽤 좋은 추천이 있습니다.

피할 이름

  • 카운터 또는 반복자를 제외한 단일 문자 이름
  • 모든 패키지 / 모듈 이름에서 대시 (-)
  • \__double_leading_and_trailing_underscore__ names (파이썬 예약)

명명 규칙

  • "내부"란 모듈의 내부 또는 클래스 내의 보호되거나 개인을 의미합니다.
  • 하나의 밑줄 (_) 앞에는 모듈 변수 및 함수 (import *가 포함되지 않음)를 보호하기위한 몇 가지 지원이 있습니다. 인스턴스 변수 또는 메소드에 두 개의 밑줄 (__)을 붙이면 변수 또는 메소드를 클래스에 비공개로 만듭니다 (이름 변환을 사용).
  • 관련 클래스와 최상위 함수를 함께 모듈에 배치합니다. Java와 달리 모듈 당 하나의 클래스로 제한 할 필요가 없습니다.
  • 클래스 이름에는 CapWords 를 사용하고 모듈 이름에는 lower_with_under.py 를 사용하십시오. CapWords.py 라는 이름의 기존 모듈이 많이 있지만, 모듈이 클래스 이름을 따서 명명 될 때 혼란 스럽기 때문에 이것은 권장하지 않습니다. ( "기다림 - from StringIO import StringIO 오거나 from StringIO import StringIO 했습니까?")

귀도의 권장 사항에서 나온 지침

C # 배경에서 오는 변수 및 메서드 이름의 명명 규칙은 보통 CamelCase 또는 Pascal Case입니다.

// C# example
string thisIsMyVariable = "a"
public void ThisIsMyMethod()

파이썬에서는 위의 내용을 보았지만 밑줄이 사용 된 것을 보았습니다.

# python example
this_is_my_variable = 'a'
def this_is_my_function():

파이썬에 더 바람직한, 결정적인 코딩 스타일이 있습니까?


David Goodger ( "Pythonista Like Pythonista")는 PEP 8 권장 사항을 다음과 같이 설명합니다.

  • 함수, 메소드, 속성, 변수에 대한 joined_lower

  • 상수에 대한 joined_lower 또는 ALL_CAPS

  • StudlyCaps 클래스 수업

  • camelCase 기존 규칙을 준수하기 camelCase


개인적으로 나는 CamelCase를 클래스, mixedCase 메서드 및 함수에 사용하려고합니다. 변수는 대개 밑줄로 구분됩니다 (기억할 수있을 때). 이렇게하면 모든 것을 똑같이 보지 않고 정확히 내가 무엇을 부르는지 알 수 있습니다.


다른 답에서와 같이 PEP 8이 있지만 PEP 8은 표준 라이브러리의 스타일 가이드 일 뿐이며 PEP 8은 표준 라이브러리의 경우에만 사용됩니다. 다른 코드 조각들에 대한 PEP 8의 가장 빈번한 편차 중 하나는 변수 네이밍, 특히 메소드를위한 것입니다. 혼합 된 케이스를 사용하는 코드의 양을 고려하더라도 엄격한 인구 조사를 작성하는 경우 mixedCase를 사용하는 PEP 8 버전으로 끝날 것입니다. PEP 8과 다른 점은 거의 없습니다.


앞에서 언급했듯이 PEP 8에서는 변수, 메소드 및 함수에 lower_case_with_underscores 를 사용합니다.

변수에 lower_case_with_underscores 를 사용하고 메소드와 함수에 mixedCase 를 사용하는 것이 코드를보다 명확하고 읽기 쉽게 만듭니다. 따라서 Python의 " Zen of Python "이 "암시적인 것보다 낫다"와 "가독성이 뛰어나다"



코딩 스타일은 일반적으로 조직의 내부 정책 / 컨벤션 표준의 일부이지만, 일반적으로 pyro에서 all_lower_case_underscore_separator 스타일 (snake_case라고도 함)이 가장 일반적이라고 생각합니다.


파이썬 코드스타일 가이드가 인정한 것처럼,

파이썬 라이브러리의 명명 규칙은 다소 엉망입니다. 그래서 우리는이 완전히 일관된 결과를 얻지 못할 것입니다.

이것은 파이썬의 표준 라이브러리 를 가리킨다. 그들이 일관성 유지할 수 없다면, 모든 파이썬 코드에 대해 일반적으로 준수하는 컨벤션을 가질 희망은 거의 없다.

여기에서, 그리고 여기서 논의 할 때, 나는 Python으로 넘어갈 때 변수 나 함수에 대해 Java 나 C # (명확하고 잘 정의 된) 명명 규칙을 사용하는 것이 끔찍한 죄라는 것을 추론 할 것이다. 물론 코드베이스 / 프로젝트 / 팀에 대한 일반적인 스타일이 무엇이든 상관없이 준수하는 것이 가장 좋습니다. 파이썬 스타일 가이드가 지적했듯이 내부 일관성이 가장 중요합니다.

저를 이교도로 해산 시키십시오. :-) OP와 마찬가지로, 나는 아직 "Pythonista"가 아닙니다.





naming-conventions