C#の背景から来る変数とメソッド名の命名規則は通常CamelCaseかPascal Caseのどちらかです:
// C# example
string thisIsMyVariable = "a"
public void ThisIsMyMethod()
Pythonでは、上記を見ましたが、アンダースコアも使われています。
# python example
this_is_my_variable = 'a'
def this_is_my_function():
Pythonにもっと好ましい、決定的なコーディングスタイルはありますか?
Python PEP 8 を参照してください。
読みやすくするために、必要に応じて関数名は小文字にし、単語はアンダースコアで区切ります。
mixedCaseは、すでに一般的なスタイルである文脈でのみ許可されています
変数...
読みやすさを向上させるために、必要に応じて、関数命名規則を使用してください。単語は小文字でアンダースコアで区切ります。
私自身のプロジェクトではlower_case
よりmixedCase
を好むので、個人的には、これとは異なります。
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
に適用する必要があります。
David Goodger( "Code Like a Pythonista" here )では、PEP 8の推奨事項を次のように説明しています。
関数、メソッド、属性、変数のjoined_lower
定数の場合はjoined_lower
またはALL_CAPS
クラスのStudlyCaps
既存の規則に準拠するためだけのcamelCase
スタイルガイドとしてのPythonコード は認めている、
Pythonのライブラリの命名規則はちょっと面倒ですので、これを完全に一貫性のあるものにすることは決してありません。
これはPythonの標準ライブラリだけを参照していることに注意してください。もし彼らがthatを矛盾させることができないのであれば、all Pythonコードに対して一般的に遵守されている規約を持つという希望はほとんどないでしょう。
それから、そしてここでの議論から、Pythonに渡るときに変数や関数に例えばJavaやC#の(明確で確立された)命名規則を使い続けるのであれば、それは=恐ろしい罪ではない)と思います。 Pythonスタイルガイドが指摘しているように、内部の一貫性は最も重要なことです。
異端者として私を解雇してください。 OPと同じように、私は「Pythonista」ではありません。
他の答えが示すように、 PEP 8 がありますが、PEP 8は標準ライブラリのスタイルガイドに過ぎず、その中の福音書としてのみとられています。他のコードに対してPEP 8から最も頻繁に逸脱しているものの1つは、特にメソッド用の変数の命名です。厳密な国勢調査を行う場合、mixedCaseを使用するコードの量を考慮すると、優勢なスタイルは1つもありません。おそらく、PEP 8のmixedCaseを使用することになるでしょう。 PEP 8からの他の違いはほとんどなく、それは一般的です。
すでに述べたように、PEP 8は変数、メソッド、そして関数にlower_case_with_underscores
を使うように言っています。
変数にlower_case_with_underscores
を、メソッドや関数にmixedCase
を使用すると、コードがより明確で読みやすくなります。したがって、Pythonの Zenに従う "明示的な方が暗黙的よりも優れている"、そして "読みやすさのカウント"
個人的にはクラス、mixedCaseのメソッドや関数にCamelCaseを使うようにしています。変数は通常、アンダースコアで区切られています(覚えていると思いますが)。こうすれば、すべてが同じように見えるのではなく、自分が何を呼んでいるのか一目でわかります。
ほとんどのpythonの人々はアンダースコアを好みますが、私は今から5年以上も前からpythonを使っていますが、それでも好きではありません。彼らは私には醜く見えますが、多分それは私の頭の中のすべてのJavaです。
キャメルケースは、クラスの命名方法により適しているので、私は単に好きです。SomeClass.doSomething()
よりSomeClass.do_something()
のほうが論理的に感じます。 pythonのグローバルモジュールインデックスを見れば、その両方が見つかります。これは、時間の経過とともに成長するさまざまなソースからのライブラリのコレクションであり、Sunのような厳密なコーディング規則を用いて開発されたものではないためです。 。私は一番下の行を言うだろう:あなたが好きなものは何でも使用してください、それは単に個人的な好みの問題です。
@JohnTESladeが答えたものにさらに。 グーグルのPythonスタイルガイド はかなりすっきりした勧告を持っている、
避けるべき名前
\__double_leading_and_trailing_underscore__ names
(Pythonによって予約されています)命名規則
CapWords
を、モジュール名にはlower_with_under.py
を使用してください。 CapWords.py
という名前の既存のモジュールがたくさんありますが、モジュールの名前がクラスの後に付けられると混乱するため、これはお勧めできません。 ( "待つ - 私はimport StringIO
かfrom StringIO import StringIO
を書きましたか?")これについての論文があります: http://www.cs.kent.edu/~jmaletic/papers/ICPC2010-CamelCaseUnderScoreClouds.pdf
TL; DR snake_caseはcamelCaseより読みやすいと言っています。それが、現代の言語が可能な限りどこでもヘビを使用する(または使用すべきである)理由です。
コーディングスタイルは通常、組織の内部ポリシー/規約の標準の一部ですが、私は一般的に、all_lower_case_underscore_separatorスタイル(snake_caseとも呼ばれる)がPythonで最も一般的であると思います。
他のプログラミング言語で開発するときは、一貫性があり従うのが簡単なので、私は個人的にJavaの命名規則を使用しています。そうすれば、私がプロジェクトの中で最も難しい部分ではない、どの規約を使用するかについて、常に苦労することはありません!
通常、言語の標準ライブラリで使用されている規則に従います。