假设我要以编程方式创建函数列表,例如我想创建九个函数,在输入中给定一个数字,它们分别将其1、2,... 9相加并返回它。
我的想法是编写以下代码:
>>> functions = []
>>> for i in range(1,10):
... functions.append(lambda x : x + i)
...
>>> for f in functions:
... print(f(0), end=' ')
但是输出是
9 9 9 9 9 9 9 9 9
而不是预期的
1 2 3 4 5 6 7 8 9
我知道这与Python处理函数参数的方式有关,即,当我创建lambda
时,我将其绑定到i
的 reference 上,并且而不是值。
我该如何解决?有没有一种方法可以强迫Python制作i
的副本,而不是传递引用?