在函数调用上游的位置通过python传递kwarg

问题描述

我有一个函数func

def func(a,b,**kwargs):
    #do some stuff
    pass
从位置caller调用

def caller(a,function_handle,function_kwargs = None)
    # do some other stuff
    something = function_handle(a,function_kwargs)
    pass

并由驱动程序功能driver驱动:

def driver():
    a = 1
    b = 3
    function_i_wanna_use = func
    kwargs = {'extra_param_1' : 10,'extra_param_2' : 20}
    caller(a,function_i_wanna_use,kwargs)

我希望这个例子有意义。假定这是类似于最小二乘实现的通用形式,其中caller是最小二乘例程,并且它将使用定义的函数func拟合到一组数据。用户定义func的实例,并从driver调用最小化例程。

在这种情况下,如何正确通过kwargscaller应该与func的特定呼叫签名无关(它只要求它至少接受ab)。但是它应该告诉用户,“ func所需要的任何额外参数都可以随意传递给我,我会为您转发它们。”

现在,我只是通过传递字典来做到这一点。我认为那是不对的。如果kwargs直接将其命名为 ,那不是将func传递给driver的方式。我如何顺利地将kwargs通过一个中间人函数,而对此却一无所知?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)