对不起,如果我没有清楚地解释自己。我想创建一个包装器来调用具有不同输入数量的预定义函数。当然,我可以为每个函数创建一个单独的包装器,但我想知道是否有一种方法可以为所有情况创建一个通用包装器。
应该调用的函数名为“fun1”和“fun2”,输入数量不同。我需要创建一个包装器'fun_wrap(func_name,不确定的输入量)',它只需要调用函数名称及其相关的输入量。
还有一件事,我需要通过添加“_in”来更改输入名称,并首先将它们设为全局变量。下面是我损坏的代码。感谢您的任何建议!
def fun1(a,b):
return a+b
def fun2(a,b,c):
return a*b/c
def set_globals(**kwargs):
for argname in kwargs:
globals()['%s_in' % argname] = kwargs[argname]
def fun_wrap(func_name, uncertain amount of inputs):
ffunc_name(set_globals(uncertain amount of inputs))
这样,如果我可以使用以下参数调用 final_fun:
fun_wrap(fun1,a,b)
fun_wrap(fun2,a,b)
更新
我尝试使用 *arg,但失败了...
def fun1(a,b):
return a+b
def fun2(a,b,c):
return a*b/c
def set_globals(**kwargs):
for argname in kwargs:
globals()['%s_in' % argname] = kwargs[argname]
def fun_wrap(func_name, *arg):
func_name(set_globals(*arg))
fun_wrap(fun2,a=1,b=2,c=3)
得到错误:
Traceback (most recent call last):
File "D:\Dropbox\AppPest\rice\try.py", line 19, in <module>
fun_wrap(fun2,a=1,b=2,c=3)
TypeError: fun_wrap() got an unexpected keyword argument 'a'