[解決済み] Pythonのシングルアンダーコア"_"変数の目的は何ですか?
質問
の意味は何ですか?
_
後
for
というのは、このコードのことでしょうか?
if tbh.bag:
n = 0
for _ in tbh.bag.atom_set():
n += 1
解決方法は?
_
は、Pythonで従来から主に3つの用途があります。
-
対話的な式の中で,最後に実行された式の結果を保持する インタプリタ・セッション ( ドキュメント ). この前例は、標準の CPython 他のインタプリタもこれに倣っています。
-
i18nでの翻訳ルックアップについては( ゲットテキスト のようなコードで、例えば
raise forms.ValidationError(_("Please enter a correct username"))
-
汎用的な使い捨ての変数名として。
-
の一部を示す。 のように、関数の結果を意図的に無視している(概念的には破棄している)コードです。
label, has_label, _ = text.partition(':')
-
関数定義の一部として
def
またはlambda
) で、ここで の場合、シグネチャは(コールバックや親クラスのAPIなどで)固定されていますが この特定の関数の実装は、すべての関数が必要なわけではありません。 のようなコードのように、パラメータを指定します。def callback(_): return True
[長い間、この回答ではこのユースケースを挙げていませんでしたが、指摘されているように、よく出てきました。 こちら 明示的に記載する価値がある] 。
このユースケースは、翻訳ルックアップのユースケースと衝突する可能性があるので
_
を、国際化翻訳にも使用するコードブロックの中で、使い捨ての変数として使用します(多くの人々は、ダブルアンダースコアを好みます。__
このような理由から、使い捨ての変数として使用するのです。)リンターは、この使用例をよく認識しています。例えば
year, month, day = date()
を指定すると、lint警告が発生します。day
を使用しない場合は、コードの後半で使用します。この修正は、もしday
が本当に必要ない場合は、次のように記述します。year, month, _ = date()
. ラムダ関数も同じです。lambda arg: 1.0
は、1つの引数を必要とするが、それを使用しない関数を作成し、これはlintによって捕捉されます。修正方法はlambda _: 1.0
. 未使用の変数には、多くの場合、バグやタイポが隠されています(例:setday
を使用していますがdya
を次の行に追加してください)。Python 3.10 で追加されたパターンマッチ機能により、この使い方は "慣習" から "言語構文" に昇格し、以下のようになりました。
match
ステートメントが関係する:マッチケースで_
は ワイルドカードパターン この場合、ランタイムはシンボルに値をバインドすることさえしません。その他のユースケースについては、以下のことを思い出してください。
_
はまだ有効な変数名であり、したがってオブジェクトはまだ生きています。これが望ましくない場合 (たとえばメモリや外部リソースを解放するため) は、明示的にdel name
の呼び出しは、どちらもその名前が使用されていることをリンタに知らせます。 と オブジェクトへの参照を速やかにクリアする。 -
関連
-
Pythonコンテナのための組み込み汎用関数操作
-
Python jiabaライブラリの使用方法について説明
-
[解決済み】 NameError: グローバル名 'xrange' は Python 3 で定義されていません。
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] JavaScriptの変数のスコープとは何ですか?
-
[解決済み] オブジェクト名の前のシングルアンダーコアとダブルアンダーコアの意味は何ですか?
-
[解決済み】if __name__ == "__main__": は何をするのでしょうか?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】__str__と__repr__の違いは何ですか?
-
[解決済み】2つの辞書を1つの式でマージする(辞書の和をとる)には?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Pythonの非常に便利な2つのデコレーターを解説
-
pythonサイクルタスクスケジューリングツール スケジュール詳解
-
Python 可視化 big_screen ライブラリ サンプル 詳細
-
Python interpreted model libraryによる機械学習モデル出力の可視化 Shap
-
Python 入出力と高次代入の基礎知識
-
[解決済み】インポートエラー。モジュール名 urllib2 がない
-
[解決済み】ImportError: bs4という名前のモジュールがない(BeautifulSoup)
-
[解決済み】Python - "ValueError: not enough values to unpack (expected 2, got 1)" の修正方法 [閉店].
-
[解決済み】 'numpy.float64' オブジェクトは反復可能ではない
-
[解決済み] for _ in range() [重複]の意味を教えてください。