Python 如何在闭包中使用变量的副本
在python中,我可以使用Python 如何在闭包中使用变量的副本,python,closures,Python,Closures,在python中,我可以使用nonlocal关键字来确保使用外部作用域中的变量,但是如何将外部作用域中的变量复制到闭包中呢 我有这样的代码: 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_wit
nonlocal
关键字来确保使用外部作用域中的变量,但是如何将外部作用域中的变量复制到闭包中呢
我有这样的代码:
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\u的每个实例调用最后一个函数,即My\u函数[My\u函数名[-1]]
,因为变量fun是一个引用
我尝试使用fun=copy.deepcopy(我的函数[fun\u name])
,但它没有改变任何东西,可能不是最好或最快的方法。尝试以下方法:
my_functions_with_parameters = []
for fun_name in my_function_names:
fun = my_functions[fun_name]
my_functions_with_parameters.append(fun)
现在,您可以在my\u函数中为每个fun
提供参数,并在循环时使用这些参数
:
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])