我有这个 python 代码,它将几个 lambda 函数放在字典中:
dictfun = dict()
for txt in ("a", "b", "c"):
dictfun[txt] = lambda: "function " + txt
这些函数只返回一个带有调用它们的参数的字符串。
我希望看到类似function a
for dictfun["a"]()
、function b
fordictfun["b"]()
等的输出,但这就是我得到的:
>>> dictfun["a"]()
'function c'
>>> dictfun["b"]()
'function c'
>>> dictfun["c"]()
'function c'
似乎它们都评估txt
为它设置的最后一个值,即它的当前值。总之,变量没有封闭到 lambdas 中。我什至可以这样做:
>>> txt = "a"
>>> dictfun["c"]()
'function a'
我怎样才能接近txt
lambda 函数以获得预期的输出?