回答:
Python PEP 8:関数と変数名を参照してください。
関数名は小文字にする必要があり、読みやすくするために必要に応じて単語をアンダースコアで区切ってください。
変数名は、関数名と同じ規則に従います。
mixedCaseは、下位互換性を維持するために、それがすでに一般的なスタイル(例:threading.py)であるコンテキストでのみ許可されます。
findMeAClass
はおそらくより醜いですfind_me_a_class
。
GoogleのPythonのスタイルガイドは、次の規則があります。
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(ここの「Pythonのようなコード」内)は、PEP 8の推奨事項を次のように説明しています。
joined_lower
関数、メソッド、属性、変数
joined_lower
またはALL_CAPS
定数の場合
StudlyCaps
クラス用
camelCase
既存の規約にのみ準拠
StudlyCaps for classes
ほぼすべての言語のクラスに対応する優れた普遍的なルールです。では、なぜ一部のpython組み込みクラスがあるのですか(datetime.datetime
この規則に従わないなど)
unittest.TestCase.assertEqual
そして友達もsnake_caseの慣例に従っていない。真実は、規約が固まる前にPython標準ライブラリの一部が開発されたということです。
Pythonのコードのためのスタイルガイドは、認めています
Pythonのライブラリの命名規則は少し混乱しているので、これを完全に一貫させることは決してありません
これはPythonの標準ライブラリのみを指していることに注意してください。彼らがその一貫性を得ることができない場合、すべての Pythonコードに対して一般に固執する規則を持つことはほとんど期待できません。
そのことと、ここでの議論から、Pythonに渡るときに変数や関数にJavaやC#(明確で十分に確立された)などの命名規則を使い続ければ、それは恐ろしい罪ではないと推測します。もちろん、コードベース/プロジェクト/チームの一般的なスタイルを遵守するのが最善であることを覚えておいてください。Pythonスタイルガイドで指摘されているように、内部の一貫性が最も重要です。
異端者として私を解任してください。:-) OPのように、私はまだ「Pythonista」ではありません。
ありPEP 8は、他の回答が示すように、しかし、PEP 8は、標準ライブラリのための唯一のスタイルガイドであり、それが唯一の福音、その中としています。他のコードに対するPEP 8の最も頻繁な逸脱の1つは、特にメソッドに対する変数の命名です。単一の優勢なスタイルはありませんが、mixedCaseを使用するコードの量を考慮すると、厳密な国勢調査を行うと、mixedCaseを備えたPEP 8のバージョンになる可能性があります。他にPEP 8からの逸脱はほとんどありません。
言及したように、PEP 8はlower_case_with_underscores
変数、メソッド、関数に使用するように言っています。
私が使って好みlower_case_with_underscores
の変数にし、mixedCase
メソッドや関数のコードがより明確と読みやすくなります。したがって、Zen of Pythonの「明示的は暗黙的よりも優れている」と「読みやすさのカウント」に従うこと
@JohnTESladeの回答に加えて。Googleのpythonスタイルガイドには、かなりきちんとした推奨事項があります。
避けるべき名前
\__double_leading_and_trailing_underscore__ names
(Pythonで予約)命名規則
CapWords
クラス名に使用しますがlower_with_under.py
、モジュール名に使用します。という名前の既存のモジュールは多数CapWords.py
ありますが、モジュールがクラスにちなんで名付けられた場合に混乱するため、これは推奨されません。(「待つ-私は書いたimport StringIO
かfrom StringIO import StringIO
?」)ほとんどのpythonの人々はアンダースコアを好みますが、私は現在5年以上前からpythonを使用していますが、それでも好きではありません。見た目は醜いですが、頭の中にあるJavaはそれだけかもしれません。
CamelCaseは、クラスの名前の付け方によく合うので、単に好きSomeClass.doSomething()
ですSomeClass.do_something()
。Pythonのグローバルモジュールインデックスを見回すと、両方が見つかります。これは、時間の経過とともに成長したさまざまなソースからのライブラリのコレクションであり、厳密なコーディングルールを持つSunのような1つの会社によって開発されたものではないためです。 。肝心なことは、あなたがより好きなものを使用することです。それは個人的な好みの問題です。
make_xpath_predicate
、make_xpath_expr
、make_html_header
、make_html_footer
SomeClass.doSomething()
静的メソッドはまれです)an_instance.do_something()
個人的には、クラス、mixedCaseのメソッドおよび関数にCamelCaseを使用するようにしています。変数は通常、アンダースコアで区切られています(覚えている場合)。このようにして、すべてが同じに見えるのではなく、正確に私が何を呼んでいるのかが一目でわかります。
これに関する論文があります:http : //www.cs.kent.edu/~jmaletic/papers/ICPC2010-CamelCaseUnderScoreClouds.pdf
TL; DRこれは、snake_caseがcamelCaseより読みやすいことを示しています。だからこそ、現代の言語はどこでもヘビを使用します(または使用する必要があります)。