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 StringIO
나from StringIO import StringIO
?”)