【发布时间】:2021-03-06 03:41:30
【问题描述】:
我有一个函数列表,每个函数都有一个参数。
我想使用一个库的函数,它接受函数但希望它们没有参数。
所以我想创建一个新函数列表,使用 lambda 来“外部”传递参数
但是新的函数列表并没有产生预期的结果。
(这是一些最小的例子)
def fun_a(param):
print("a")
def fun_b(param):
print("b")
def do_something(funs):
funs_out = []
for fun in funs:
funs_out.append(lambda: fun(0))
return funs_out
funs = [fun_a,fun_b]
funs[0](0) # prints a
funs[1](0) # prints b
funs_changed = do_something(funs)
#funs_changed = [lambda: f(0) for f in funs]
funs_changed[0]() # prints b ??? expected a
funs_changed[1]() # prints b
我之前尝试过funs_changed = [lambda: f(0) for f in funs],因为它看起来更像pythonic,然后尝试使用更明确的代码(原始for循环)来查找根本原因,但没有成功。
我错过了什么?
【问题讨论】: