Close variable in lambda function
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
What do (lambda) function closures capture in Python?
我有一个python代码,它将几个lambda函数放在一个字典中:
1 2 3 | dictfun = dict() for txt in ("a","b","c"): dictfun[txt] = lambda:"function" + txt |
这些函数只返回一个字符串,其中包含调用它们时使用的参数。我希望能看到像
1 2 3 4 5 6 | >>> dictfun["a"]() 'function c' >>> dictfun["b"]() 'function c' >>> dictfun["c"]() 'function c' |
他们似乎都将EDOCX1[4]评估为它设置的最后一个值,即当前值。总之,变量没有被封闭到lambda中。我甚至可以这样做:
1 2 3 | >>> txt ="a" >>> dictfun["c"]() 'function a' |
如何关闭lambda函数中的
可以将EDOCX1的值(0)设置为关键字参数的默认值:
1 2 3 | dictfun = dict() for txt in ("a","b","c"): dictfun[txt] = lambda txt=txt:"function" + txt |