927

C# のバックグラウンドから来て、変数とメソッド名の命名規則は通常キャメルケースまたはパスカルケースのいずれかです。

// C# example
string thisIsMyVariable = "a"
public void ThisIsMyMethod()

Python では、上記を確認しましたが、アンダースコアが使用されていることも確認しました。

# python example
this_is_my_variable = 'a'
def this_is_my_function():

Python のより好ましい、決定的なコーディング スタイルはありますか?

4

14 に答える 14

1019

Python PEP 8: 関数名と変数名を参照してください。

関数名は小文字にし、読みやすさを向上させるために必要に応じて単語をアンダースコアで区切ります。

変数名は、関数名と同じ規則に従います。

mixedCaseは、下位互換性を維持するために、それが既に一般的なスタイル (例: threading.py ) であるコンテキストでのみ許可されます。

于 2008-10-01T21:05:24.187 に答える
909

GooglePythonスタイルガイドには次の規則があります。

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

于 2011-12-07T22:44:24.630 に答える
271

David Goodger ("Code Like a Pythonista" here ) は、PEP 8 の推奨事項を次のように説明しています。

  • joined_lower関数、メソッド、属性、変数用

  • joined_lowerまたはALL_CAPS定数の場合

  • StudlyCapsクラス用

  • camelCase既存の慣習に従うためだけに

于 2008-10-02T03:53:12.227 に答える
52

Python コードのスタイル ガイドで認められているように、

Python のライブラリの命名規則は少し混乱しているため、これを完全に一貫させることはできません。

これは Python の標準ライブラリのみを指すことに注意してください。そのような一貫性が得られない場合すべてのPython コードに対して一般的に順守される規則を持つという希望はほとんどありませんね。

それとここでの議論から、 Python に移行するときに変数や関数に Java や C# の (明確で確立された) 命名規則などを使い続けることは、恐ろしい罪ではないと推測できます。もちろん、コードベース/プロジェクト/チームの一般的なスタイルが何であれ、従うのが最善であることを心に留めておいてください。Python Style Guide が指摘しているように、内部の一貫性が最も重要です。

私を異端者として遠慮なく片付けてください。:-) OPのように、私はまだ「Pythonista」ではありません。

于 2010-04-25T11:23:57.233 に答える
37

前述のように、PEP 8はlower_case_with_underscores、変数、メソッド、および関数に使用すると述べています。

lower_case_with_underscores私は変数とメソッドと関数に使用することを好みmixedCase、コードをより明確で読みやすくします。したがって、PythonのZenの「暗黙的よりも明示的の方が優れている」および「読みやすさのカウント」に従う

于 2008-11-05T02:51:29.330 に答える
35

他の回答が示すように、PEP 8がありますが、PEP 8は標準ライブラリのスタイルガイドにすぎず、その中の福音としてのみ解釈されます。他のコードに対するPEP8の最も頻繁な逸脱の1つは、特にメソッドの変数の命名です。単一の優勢なスタイルはありませんが、mixedCaseを使用するコードの量を考慮すると、厳密な調査を行うと、mixedCaseを含むPEP8のバージョンになる可能性があります。非常に一般的なPEP8からの逸脱は他にほとんどありません。

于 2008-10-01T21:12:41.797 に答える
27

ほとんどのPythonの人々はアンダースコアを好みますが、私がPythonを使用しているのは5年以上前からですが、それでも私はアンダースコアが好きではありません。彼らは私には醜いように見えますが、おそらくそれが私の頭の中のすべてのJavaです。

キャメルケースはクラスの名前の付け方によく合うので、私は単にキャメルケースの方が好きSomeClass.doSomething()ですSomeClass.do_something()。Pythonのグローバルモジュールインデックスを見ると、両方が見つかります。これは、さまざまなソースからのライブラリのコレクションであり、厳密なコーディングルールを使用してSunのような1つの会社によって開発されたものではないためです。 。肝心なのは、好きなものを使ってください。それは個人的な好みの問題です。

于 2008-10-01T21:16:21.680 に答える
27

@JohnTESladeが答えたことにさらに。Google の python スタイル ガイドには、かなりきちんとした推奨事項がいくつかあります。

避けるべき名前

  • カウンターまたはイテレーターを除く単一文字の名前
  • パッケージ/モジュール名のダッシュ (-)
  • \__double_leading_and_trailing_underscore__ names(Python によって予約されています)

命名規則

  • 「内部」とは、モジュールの内部、またはクラス内の保護またはプライベートを意味します。
  • 単一のアンダースコア (_) を先頭に追加すると、モジュール変数と関数を保護するためのサポートがいくつかあります (import * from には含まれません)。インスタンス変数またはメソッドの先頭に 2 つのアンダースコア (__) を追加すると、変数またはメソッドをそのクラスに対してプライベートにするのに効果的です (名前マングリングを使用)。
  • 関連するクラスとトップレベルの関数をまとめてモジュールに配置します。Java とは異なり、モジュールごとに 1 つのクラスに制限する必要はありません。
  • CapWordsクラス名に使用しますがlower_with_under.py、モジュール名には使用します。という名前の既存のモジュールは多数ありCapWords.pyますが、モジュールがたまたまクラスにちなんで名付けられた場合に混乱を招くため、これは推奨されません。(「待って -- 私が書きましたimport StringIOfrom StringIO import StringIO?」)

Guido の推奨事項から派生したガイドライン ここに画像の説明を入力

于 2018-06-20T23:49:28.340 に答える
20

個人的には、クラス、mixedCase メソッド、および関数に CamelCase を使用しようとしています。変数は通常アンダースコアで区切られています (覚えている限り)。これにより、すべてが同じように見えるのではなく、正確に何を呼び出しているかが一目でわかります。

于 2008-10-02T03:24:30.327 に答える
16

これに関する論文があります: http://www.cs.kent.edu/~jmaletic/papers/ICPC2010-CamelCaseUnderScoreClouds.pdf

TL;DR snake_case は camelCase より読みやすいと言われています。そのため、現代の言語では、可能な限りスネークを使用します (または使用する必要があります)。

于 2016-05-09T16:20:04.477 に答える
3

コーディングスタイルは通常、組織の内部ポリシー/コンベンション標準の一部ですが、一般的に、all_lower_case_underscore_separatorスタイル(snake_caseとも呼ばれます)はPythonで最も一般的だと思います。

于 2008-10-01T21:08:19.203 に答える
-2

通常、言語の標準ライブラリで使用されている規則に従います。

于 2008-10-02T03:55:18.257 に答える