funcs = []
for i in range(3):
a = i
func = lambda x: a
funcs.append(func)
print [func(0) for func in funcs]
我想打印[0,1,2]
,而是打印 [2,2,2]
。我明白发生了什么,问题是我该如何规避这个问题?
最佳答案
您可以通过使用关键字参数将 a
绑定(bind)到 lambda
的本地范围来解决此问题:
funcs = []
for i in range(3):
a = i
func = lambda x, a=a: a
funcs.append(func)
print [func(0) for func in funcs]
输出:
[0, 1, 2]
关于python - 函数依赖于可迭代对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25881266/