我在Python 3.5.1中尝试了以下代码:
>>> f = {x: (lambda y: x) for x in range(10)}
>>> f[5](3)
9
很明显,这应该返回5
。我不知道其他值从何而来,我也找不到任何东西。
它似乎与引用有关-它总是返回f[9]
的答案,这是最后一个赋值的函数。
这里的错误是什么,应该如何做到这一点才能正常工作?
发布于 2016-04-23 08:16:33
下面的代码应该可以工作:
def make_func(x):
return lambda y: x
f = {x: make_func(x) for x in range(10)}
您代码中的x
最终引用了最后一个x
值,即9
,但在我的代码中,它引用了函数作用域中的x
。
https://stackoverflow.com/questions/36805071
复制相似问题