私はPythonが初めてなので、既存のコードを読み込もうとしています。ただし、これの構文については少し混乱しています。
例えば:
rlist, _, _ = select.select(sockets, [], [])
select.select()
私はそれが3つのリストを取ることを理解しています(そして私は[]
単に空のリストを意味すると思います)が、_
ある種のプレースホルダーを示すために使用されていますか?
私はPythonが初めてなので、既存のコードを読み込もうとしています。ただし、これの構文については少し混乱しています。
例えば:
rlist, _, _ = select.select(sockets, [], [])
select.select()
私はそれが3つのリストを取ることを理解しています(そして私は[]
単に空のリストを意味すると思います)が、_
ある種のプレースホルダーを示すために使用されていますか?
それは単なる変数の名前です!通常、人々_
は一時的または重要でない変数に使用します。
他の人が述べているように_
、翻訳ライブラリである gettext の一般的なエイリアスです。関数として呼び出されている場合は、いつ gettext として使用されているかを識別できます。_('Hello, world!')
.
プロのヒント: Python コンソールでは、最後のステートメントの結果を取得するために使用できます。
>>> 3 + 4
7
>>> a = _
>>> print a
7
これは単なる匿名変数であり、Python にとって特別な意味はありません。i
ループカウンタとしての使用と比較してください。
通常、これを使用して、周囲のコードがその変数の値を無視することを文書化します。
Python インタラクティブ コンソールでは、最後の式の結果が に割り当てられますが_
、これは Python プログラムでは実行されません。
他の回答が何を言っているかにかかわらず_
、 Python では特別な意味があります。これは、対話型プロンプトで出力された最後の結果です。
>>> 2+2
4
>>> _+2
6
(もちろん、シェルから Python スクリプトを実行しているなどの理由で対話型のプロンプトが表示されない場合は、特別な意味はありません。)
これは無名変数を表します。変数が必要なため使用されますが、値は無視できます。
通常、変数を再度参照する必要がない場合は、変数に単一のアンダースコアを付けて名前を付けます。たとえば、次のようなものです。
for _ in range(10):
print "hello"
これは "hello" を 10 回出力するだけで、ループ制御変数を参照する必要はありません (_
この場合)。
あなたの例でselect.select(sockets, [], [])
は、一見最初のアイテムだけが必要なように見えるタプル(またはリストまたはセット)を返すため、アンダースコアを使用します。