Python の変数名と関数名の命名規則は何ですか?
-
03-07-2019 - |
質問
C# のバックグラウンドを持っているため、変数とメソッド名の命名規則は通常、キャメルケースまたはパスカルケースのいずれかです。
// 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(" Pythonのようなコード" こちら)PEP 8の推奨事項を次のように説明しています:
-
関数、メソッド、
-
joined_lower
属性、変数 -
joined_lower
またはALL_CAPS
定数 -
クラスのStudlyCaps
準拠するためだけに -
camelCase
既存の規則
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の" explicit is better than implicit"および「読みやすさのカウント」
個人的には、クラス、mixedCaseのメソッドおよび関数にCamelCaseを使用しようとしています。変数は通常、アンダースコアで区切られます(覚えている場合)。これにより、すべてが同じように見えるのではなく、私が正確に何を呼んでいるか一目でわかります。
ほとんどのpythonの人々はアンダースコアを好んでいますが、5年以上前からpythonを使用していますが、それでも好きではありません。彼らは私にはtoいだけに見えますが、それが私の頭の中のすべてのJavaかもしれません。
CamelCaseのほうが、クラスの名前の付け方によりよくフィットするため、単にCamelCaseが好きです。 。 pythonのグローバルモジュールインデックスを見ると、両方が見つかります。これは、時間の経過とともに成長したさまざまなソースからのライブラリのコレクションであり、厳密なコーディングルールを持つSunのような会社によって開発されたものではないためです。一番下の行は次のとおりです:好きなものを使用してください、それは個人的な好みの問題です。
さらに@JohnTESladeが答えたもの。 Googleのpythonスタイルガイドには、かなりきちんとした推奨事項があります。
避けるべき名前
- カウンターまたはイテレーターを除く単一文字名
- 任意のパッケージ/モジュール名のダッシュ(-)
-
\ __ double_leading_and_trailing_underscore__名
(Pythonで予約済み)
命名規則
- "内部"モジュールの内部、またはクラス内の保護またはプライベートを意味します。
- 単一のアンダースコア(_)を付加すると、モジュール変数と関数(import * fromには含まれません)の保護がサポートされます。インスタンス変数またはメソッドの前に二重アンダースコア(__)を追加すると、変数またはメソッドをクラスに対してプライベートにすることができます(名前のマングリングを使用)。
- 関連するクラスとトップレベルの関数をモジュールにまとめます。 Javaとは異なり、モジュールごとに1つのクラスに制限する必要はありません。
- クラス名には
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 スネークケースはキャメルケースよりも読みやすいと言われています。現代言語が可能な限りヘビを使用する (または使用する必要がある) のはそのためです。
コーディングスタイルは通常、組織の内部ポリシー/コンベンション標準の一部ですが、一般的に、pythonではall_lower_case_underscore_separatorスタイル(snake_caseとも呼ばれます)が最も一般的だと思います。
通常、言語の標準ライブラリで使用される規則に従います。