38

重複の可能性:
forループで未使用の変数を宣言することを回避するにはどうすればよいですか?

Pythonでは、使用されない変数に名前を付けるためのベストプラクティスは何ですか?これは確かに奇妙な質問ですが、私の特定のケースでは、値のみに関心がある(key、value)のタプルがあります。私のユースケースの基本的なデモ:

some_stuff = [("key", "value"), ("key2", "value")]
for _, value in some_stuff:
    pass  # TODO: do something really important with value

Eclipseで、変数に_または_プレフィックス(例:_k)を付けると、未使用の変数の警告が表示されず、_プレフィックスを削除すると警告が発生することに気付きましたが、これは奇妙な/「機能」である可能性がありますPythonのベストプラクティスではなくEclipseで。

4

4 に答える 4

34

これがEclipseのものであるかどうかはわかりませんが、私は通常、気にしない値(つまり、タプルの戻り値、または-loops'_'のインデックス値)を示すために使用します。for

もちろん、変数の命名dummyや。などの古いスタンバイにいつでも頼ることができますignore

PEP 8がこれについて何か言及しているかどうかはわかりませんが、覗いてみる価値があるかもしれません。

于 2012-07-14T18:12:22.900 に答える
19

はい、これはPythonのコーディング規約です。ベストプラクティスは、_設定されている値を気にしない場所で使用することです。たとえば、タプルから値を解凍する場合などです。ただし、これが必要な場合は、Python以外の方法で何か他のことをしている可能性があります。

_Phil Cooperが言ったように、接頭辞は「プライベート」メソッドと変数を示すために使用されます。これを使用して、これらのメソッドが他のモジュールが依存できる、または依存する必要のあるパブリックコントラクトの一部ではないことを示します。

いくつかの参考文献:

于 2012-07-14T18:21:02.590 に答える
4

始めましょう...

>>> import this
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
...
Readability counts.
Special cases aren't special enough to break the rules.

疑わしくないアプローチを選択することをお勧めします。それは通常、自己説明可能で、単純で、理解できる何かを意味します。未使用を表現することを主張するなら、名前はunusedどうですかdummy

_可能であれば、もっと見えない、隠されている、あるいは見落とされる候補者でさえあるべきですか?

Perlユーザーにとって、は未使用_以外の何かを意味します。Perlユーザーを気にしないかもしれませんが、これまでに会ったことがない場合、あなたにとってどのような意味がありますか?_

于 2012-07-14T18:39:16.863 に答える
2

あなたはほとんどそれを手に入れました_1

  • 1つの主要なアンダースコアは、はい、これが存在し、それを見ることができることを意味しますが、代わりに別のメソッドまたはプロパティを使用する必要があります。ドキュメントを参照してください。
  • 2つの主要なアンダースコアは、危険を意味します。触れないでください。さもないと、物事の状態と安定性が著しく損なわれます。近づかないでください。あなたがそれを台無しにした場合、何かがうまくいかない場合、それはすべてあなた自身の責任です。

注:使用は、名前のマングリング__を引き起こすため、単なる命名規則ではありません。これにより、変数の名前がに変更されます。そのため、変数/メソッドをクラス外で使用するのが難しくなります。これは主に、継承されたクラスによる親クラスのメソッドの偶発的なオーバーライドを回避するために行われます。_ClassName__var

于 2012-07-14T18:12:36.487 に答える