ホームページ > バックエンド開発 > Python チュートリアル > ループ内の Lambda 関数の変数を適切にキャプチャするにはどうすればよいですか?

ループ内の Lambda 関数の変数を適切にキャプチャするにはどうすればよいですか?

Susan Sarandon
リリース: 2024-10-19 17:26:02
オリジナル
676 人が閲覧しました

How to Properly Capture Variables in Lambda Functions in Loops?

Lambda 関数の変数のキャプチャ

ループ内で Lambda 関数を使用する場合、変数のスコープを理解することが重要です。ローカル変数をコピーする通常の関数とは異なり、ラムダ関数はローカル変数を参照します。

指定されたコードを考えてみましょう:

<code class="python">for m in ('do', 're', 'mi'):
    funcList.append(lambda: callback(m))</code>
ログイン後にコピー

ここで、ラムダ関数は外側のスコープから m の値を取得します。ただし、ループの終了後、m は最後の値 ('mi') を保持します。各ラムダ関数が呼び出されると、この共有 m 変数が参照され、その結果、出力「mi」が複数回返されます。

この問題を克服して、各ラムダが m の個別の値を確実に取得できるようにするには、「」と呼ばれる手法を使用します。デフォルト引数":

<code class="python">for m in ('do', 're', 'mi'):
    funcList.append(lambda m=m: callback(m))</code>
ログイン後にコピー

m を同じ名前のデフォルトパラメータにすることで、各ラムダは変数の独自のインスタンスをキャプチャし、期待される出力を保証します:

"do"
「れ」
「み」

以上がループ内の Lambda 関数の変数を適切にキャプチャするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート