【发布时间】:2017-06-19 14:11:38
【问题描述】:
我想编写一个返回函数列表的函数。作为 MWE,这是我对函数的尝试,它提供了三个函数,将 0、1 和 2 添加到输入数字:
def foo():
result = []
for i in range(3):
temp = lambda x: x + i
print(temp(42)) # prints 42, 43, 44
result.append(temp)
return result
for f in foo():
print(f(42)) #prints 44, 44, 44
与我的预期相反,每个函数最终都使用 i 所取的最后一个值。例如,我经历过类似的行为。列表用作函数的参数,但 Python 实际上使用指向列表的指针,但这里 i 是一个整数,所以我不明白这里发生了什么。我正在运行 Python 3.5。
【问题讨论】:
标签: python python-3.x