强制Python按值传递变量

时间:2019-07-09 09:37:48

标签: python

假设我要以编程方式创建函数列表,例如我想创建九个函数,在输入中给定一个数字,它们分别将其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的副本,而不是传递引用?

0 个答案:

没有答案