重複の可能性:
この Python 関数のラムダ式で何が起こっているのでしょうか?
(ラムダ)関数クロージャはPythonで何をキャプチャしますか?
たとえば、文字列 ['a', 'b', 'c'] のリストがあります。
そのリスト内の要素 ('a'、'b'、および 'c') をキーとして 1 つの辞書を生成し、キーを値として出力する関数 (print('a')、print('b) ')、印刷 ('c'))
from __future__ import print_function
l = ['a', 'b', 'c']
m = {k: lambda : print(k) for k in l}
上記のコードを書きました。しかし、結果は正しくありません
m['a']()
c
m['b']()
c
そこでラムダを使用しない場合、私はそれを知っています
m = {k:print(k) for k in l}
これは問題ありません。しかし、ラムダがここで機能しない理由を知りたいです。
これを解決する方法はありますか?ありがとう