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

C # 배경에서 변수와 메소드 이름의 명명 규칙은 일반적으로 camelCase 또는 PascalCase입니다.

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

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

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

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



답변

Python PEP 8 : 함수 및 변수 이름을 참조하십시오 .

가독성을 높이기 위해 필요에 따라 밑줄구분 된 단어와 함께 함수 이름은 소문자 여야 합니다.

변수 이름은 함수 이름과 동일한 규칙을 따릅니다.

mixedCase 는 이전 스타일 과의 호환성을 유지하기 위해 이미 일반적인 스타일 (예 : threading.py ) 인 컨텍스트에서만 허용됩니다 .


답변

구글 파이썬 스타일 가이드는 다음과 같은 규칙이 있습니다 :

module_name, package_name, ClassName, method_name, ExceptionName, function_name, GLOBAL_CONSTANT_NAME, global_var_name, instance_var_name, function_parameter_name, local_var_name.

비슷한 명명 체계를 적용해야합니다 CLASS_CONSTANT_NAME


답변

David Goodger ( 여기서는 “Pythonista와 같은 코드” )에서 PEP 8 권장 사항을 다음과 같이 설명합니다.

  • joined_lower 함수, 메소드, 속성, 변수

  • joined_lower또는 ALL_CAPS상수

  • StudlyCaps 수업 용

  • camelCase 기존 컨벤션 만 준수


답변

파이썬 코드를위한 스타일 가이드가 인정 하는 것처럼

파이썬 라이브러리의 명명 규칙은 약간 엉망이므로 절대로 일관되지 않습니다.

이것은 단지 파이썬의 표준 라이브러리 를 나타냅니다 . 그들이 일관성 유지할 수 없다면 , 모든 파이썬 코드에 대해 일반적으로 준수해야 할 규칙이 거의 없을 것입니다.

이것과 토론에서, 파이썬으로 넘어갈 때 변수 또는 함수에 대해 Java 또는 C # (명확하고 잘 확립 된) 명명 규칙을 계속 사용하면 끔찍한 죄 가 아니라고 추론합니다 . 물론 코드베이스 / 프로젝트 / 팀의 일반적인 스타일을 준수하는 것이 가장 좋습니다. 파이썬 스타일 가이드가 지적했듯이 내부 일관성이 가장 중요합니다.

나를 이단자로 기각하십시오. 🙂 OP와 마찬가지로 저는 아직 “Pythonista”가 아닙니다.


답변

PEP 8은 다른 답변이 보여으로,하지만, PEP 8은 표준 라이브러리에 대해서만 스타일 가이드이며, 그것은 오직 복음 거기로 물었다. 다른 코드 조각에 대한 PEP 8의 가장 빈번한 편차 중 하나는 특히 메서드에 대한 변수 명명입니다. mixedCase를 사용하는 코드의 양을 고려할 때 단일 우세한 스타일은 없지만, 인구 조사가 엄격하게 이루어지면 mixedCase가있는 PEP 8 버전으로 끝날 것입니다. PEP 8과 다른 편차는 거의 없습니다.


답변

언급했듯이 PEP 8은 lower_case_with_underscores변수, 방법 및 함수 에 사용한다고 말합니다 .

내가 사용하여 선호 lower_case_with_underscores변수 및 mixedCase메서드와 함수의 코드가 더 명시 적으로 읽을 수 있습니다. 따라서 파이썬의 선에 따르면 “명시 적은 암시 적보다 낫다”및 “가독성”


답변

@JohnTESlade가 답변 한 내용에 더 나아가. Google의 Python 스타일 가이드 에는 몇 가지 깔끔한 권장 사항이 있습니다.

피해야 할 이름

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

명명 규칙

  • “내부”는 모듈 내부 또는 클래스 내에서 보호 또는 개인을 의미합니다.
  • 단일 밑줄 (_)을 앞에 추가하면 모듈 변수 및 함수를 보호 할 수 있습니다 (import * from에 포함되지 않음). 인스턴스 변수 나 메소드에 이중 밑줄 (__)을 붙이면 변수 나 메소드를 클래스에 비공개로 만드는 역할을합니다 (이름 맹 글링 사용).
  • 관련 클래스와 최상위 함수를 모듈에 함께 배치하십시오. Java와 달리, 모듈 당 하나의 클래스로 제한 할 필요는 없습니다.
  • CapWords클래스 이름에 사용하지만 lower_with_under.py모듈 이름에 사용하십시오 . 라는 이름의 기존 모듈이 많이 있지만 모듈 이름 CapWords.py이 클래스 이름을 따를 때 혼란 스럽기 때문에 권장하지 않습니다. ( “대기 – 내가 쓸 않았다 import StringIOfrom StringIO import StringIO?”)

Guido의 권장 사항에서 파생 된 지침
여기에 이미지 설명을 입력하십시오