【发布时间】:2012-11-28 08:30:20
【问题描述】:
可能重复:
What’s going on with the lambda expression in this python function?
What do (lambda) function closures capture in Python?
例如,我有一个字符串列表 ['a', 'b', 'c']。
我想生成一个字典,将该列表中的元素('a'、'b'和'c')作为键,并生成一个将键作为值打印的函数(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
我知道如果我不在那里使用 lambda
m = {k:print(k) for k in l}
这没问题。但我想知道为什么 lambda 在这里不起作用。
知道如何解决这个问题吗?谢谢
【问题讨论】:
-
@josh-lee 你是对的。但似乎答案不同。