[编辑] 例如,我有一个函数,我有不同的 y 值。
def h(x):
return x*y
我尝试在我的列表中附加 h(x),比如 y = 3。但是,当我将 y 更改为另一个值并再次在我的列表中附加 h(x) 时,我的第一个 h(x) 中的 y 也有改变了。
例子:
>> func_list = []
>> def h(x):
>> return x*y
>> y = 1
>> func_list.append(lambda x:h(x))
>> func_list[0](5)
>> 5
>> y = 2
>> func_list.append(lambda x:h(x))
>> func_list[1](5)
>> 10
>> func_list[0](5)
>> 10
有没有什么好的方法可以做到这一点,因为我不能用不同的 y 值制作很多 h(x)?
请您参考如下方法:
由于您的 y 可能存在于闭包中(顺便说一句:工作 最小示例怎么样?),您必须在其周围包裹一层:
def mk_func(y):
def h(x):
return x * y
return h
然后
my_funcs=[mk_func(i) for i in (1, 3, 4, 7)]
.
