用关键字params调用函数

2024-04-24 16:11:14 发布

您现在位置:Python中文网/ 问答频道 /正文

(我真的想不出更好的标题了!)你知道吗

我有一套功能:

def foo(bar, baz)
def spam(blah, etc, woof)

以及Namespace对象,其包括函数名和函数特定参数,例如args=(fun=foo, baz=111, baz=222)。如何调用函数并向其传递参数?像这样,但更好:

 x = vars(args)
 fun = x['fun']
 del x['fun']
 fun(**x)

(我正在寻找一个很好的单线解决方案)。你知道吗


Tags: 函数功能标题参数foodefetcbar
3条回答

你想要x['fun'](**x)吗?你知道吗

只要函数采用**kwargs参数,这就可以工作。如果没有,您将不得不做一些事情来将您想要的条目从名称空间中分割出来。你知道吗

我不知道你想要什么,但这会给你类似的结果:

def callback(fun, *args, **kwargs):
    return fun(*args, **kwargs)

然后你可以这样称呼它:

callback(some_func, 'a', 'b', c=10, d=123)

这将依次调用:

some_func('a', 'b', c=10, d=123)

aDict是在"fun"键和其他参数下具有函数名的字典时,您可以尝试:

aDict.pop("fun")(**aDict)

相关问题 更多 >