Skip to main content
 首页 » 编程设计

python之一种在 python 中制作函数列表的优雅方法

2025年05月04日10cyq1162

[编辑] 例如,我有一个函数,我有不同的 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)] 

.