在python中,我可以使用nonlocal
关键字来确保使用外部作用域中的变量,但是如何copy从外部作用域中的变量进入闭包?
我有这样的代码:
my_functions_with_parameters = []
for fun_name in my_function_names:
fun = my_functions[fun_name]
def fun_with_parameters():
return fun(1,2,3)
my_functions_with_parameters.append(fun_with_parameter)
我的问题是,fun_with_parameters
的每个实例都调用最后一个函数,即my_functions[my_function_names[-1]]
,因为变量fun是引用。
我尝试使用fun = copy.deepcopy(my_functions[fun_name])
,但它没有改变任何东西,可能不是最好或最快的方法。
尝试以下方法:
my_functions_with_parameters = []
for fun_name in my_function_names:
fun = my_functions[fun_name]
my_functions_with_parameters.append(fun)
现在您可以在遍历它们时为fun
中的每个my_functions_with_parameters
提供参数:
for my_fun in my_functions_with_parameters:
my_fun(1,2,3)
或者您可以使用函数将参数存储在元组中:
my_functions_with_parameters = []
for fun_name in my_function_names:
fun = my_functions[fun_name]
my_functions_with_parameters.append((fun, 1, 2, 3))
并通过以下方式致电:
for tup in my_functions_with_parameters:
tup[0](tup[1], tup[2], tup[3])