我正在尝试在循环内创建函数:
functions = []
for i in range(3):
def f():
return i
# alternatively: f = lambda: i
functions.append(f)
问题在于所有函数最终都相同。三个函数应该返回0、1和2,但它们都返回了2。print([f() for f in functions])
# expected output: [0, 1, 2]
# actual output: [2, 2, 2]
为什么会这样,我该怎么做才能得到三个不同的函数,分别输出0、1和2?
lambda: i
替换为lambda i=i: i
。您的代码现在是for i in range(3): functions.append(lambda i=i: i)
。 - Basjlambda: i
替换为lambda i=i: i
。您的代码现在是for i in range(3): functions.append(lambda i=i: i)
。 - undefined