【发布时间】:2022-01-16 02:27:24
【问题描述】:
我写了一个类似的 Python 代码:
fun_list = []
for i in range(10):
fun_list.append(lambda : f(i))
for j in range(10):
fun_list[j]()
我希望它输出 0 到 9 之间的数字,但实际上它输出了 10 次 9!
我认为问题是变量被传输到函数 f 只有它被调用。一旦被调用,它将全局查找名为“i”的变量。
如何修改代码以输出0到9的数字?
【问题讨论】:
-
为什么要使用
lambda?只是fun_list.append(i)可以输出0到9。 -
这是由于 lambda 的后期绑定。我敢肯定 SO 上有骗子。
标签: python function lambda reference