【发布时间】:2018-11-16 17:38:22
【问题描述】:
我正在尝试在循环内创建函数:
functions = []
for i in range(3):
def f():
return i
# alternatively: f = lambda: i
functions.append(f)
问题是所有功能最终都是相同的。所有三个函数都返回 2,而不是返回 0、1 和 2:
print([f() for f in functions])
# expected output: [0, 1, 2]
# actual output: [2, 2, 2]
为什么会发生这种情况,我应该怎么做才能获得分别输出 0、1 和 2 的 3 个不同函数?
【问题讨论】: