답변:
Python PEP 8 : 함수 및 변수 이름을 참조하십시오 .
가독성을 높이기 위해 필요에 따라 밑줄 로 구분 된 단어와 함께 함수 이름은 소문자 여야 합니다.
변수 이름은 함수 이름과 동일한 규칙을 따릅니다.
mixedCase 는 이전 스타일 과의 호환성을 유지하기 위해 이미 일반적인 스타일 (예 : threading.py ) 인 컨텍스트에서만 허용됩니다 .
findMeAClass
아마도 find_me_a_class
.
구글 파이썬 스타일 가이드는 다음과 같은 규칙이 있습니다 :
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
property
... 아마도 그것은 실제로 무엇보다 척하는 것이 문제 일 것입니다.
David Goodger ( 여기서는 "Pythonista와 같은 코드" )에서 PEP 8 권장 사항을 다음과 같이 설명합니다.
joined_lower
함수, 메소드, 속성, 변수
joined_lower
또는 ALL_CAPS
상수
StudlyCaps
수업 용
camelCase
기존 컨벤션 만 준수
StudlyCaps for classes
거의 모든 언어의 수업에 대한 보편적 인 규칙입니다. 그렇다면 왜 파이썬 내장 클래스 datetime.datetime
가 있습니까? (이 규칙을 따르지 않습니까?)
unittest.TestCase.assertEqual
친구도 snake_case 규칙을 따르지 않습니다. 진실은 파이썬 표준 라이브러리의 일부가 컨벤션이 확정되기 전에 개발되었으며 이제 우리는 그것들에 고착하고 있습니다.
파이썬 코드를위한 스타일 가이드가 인정 하는 것처럼
파이썬 라이브러리의 명명 규칙은 약간 엉망이므로 절대로 일관되지 않습니다.
이것은 단지 파이썬의 표준 라이브러리 를 나타냅니다 . 그들이 일관성 을 유지할 수 없다면 , 모든 파이썬 코드에 대해 일반적으로 준수해야 할 규칙이 거의 없을 것입니다.
이것과 토론에서, 파이썬으로 넘어갈 때 변수 또는 함수에 대해 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
(파이썬에 의해 예약 됨)명명 규칙
CapWords
클래스 이름에 사용하지만 lower_with_under.py
모듈 이름에 사용하십시오 . 라는 이름의 기존 모듈이 많이 있지만 모듈 이름 CapWords.py
이 클래스 이름을 따를 때 혼란 스럽기 때문에 권장하지 않습니다. ( "대기 - 내가 쓸 않았다 import StringIO
나 from StringIO import StringIO
?")대부분의 파이썬 사람들은 밑줄을 선호하지만, 지금 5 년 이상부터 파이썬을 사용하고 있어도 여전히 그들을 좋아하지 않습니다. 그들은 나에게 못 생겼지 만 어쩌면 그것은 내 머리 속의 모든 Java 일 것입니다.
나는 단순히 클래스의 이름을 지정하는 방식에 더 적합하기 때문에 더 나은 낙타 표기법처럼, 그것은이 더 논리적 인 느낌 SomeClass.doSomething()
보다 SomeClass.do_something()
. 파이썬의 전역 모듈 색인을 살펴보면 둘 다 찾을 수 있습니다. 시간이 지남에 따라 다양한 소스의 라이브러리 모음이기 때문에 엄격한 코딩 규칙을 사용하여 Sun과 같은 한 회사에서 개발 한 것이 아닙니다. . 결론은 다음과 같습니다. 더 좋아하는 것을 사용하십시오. 그것은 개인적인 취향의 문제 일뿐입니다.
make_xpath_predicate
, make_xpath_expr
, make_html_header
,make_html_footer
SomeClass.doSomething()
정적 방법은 일반적으로 드 rare니다)an_instance.do_something()
개인적으로 클래스, mixedCase 메소드 및 함수에 CamelCase를 사용하려고합니다. 변수는 일반적으로 밑줄로 구분됩니다 (기억할 수있는 경우). 이 방법으로 모든 것이 동일하게 보이기보다는 정확히 무엇을 부르는지 한 눈에 알 수 있습니다.
이것에 관한 논문이 있습니다 : http://www.cs.kent.edu/~jmaletic/papers/ICPC2010-CamelCaseUnderScoreClouds.pdf
TL; DR 그것은 snake_case가 camelCase보다 더 읽기 쉽다고 말합니다. 이것이 현대 언어가 가능한 곳에서 뱀을 사용하는 이유입니다.
일관되고 따르기 쉬운 다른 프로그래밍 언어로 개발할 때 개인적으로 Java 명명 규칙을 사용합니다. 그렇게하면 프로젝트에서 가장 어려운 부분이 아닌 어떤 규칙을 사용 해야할지 끊임없이 고민하지 않습니다!
library_function(my_arg)
)로 호출되는 것입니다 .