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