2024-04-24 16:11:14 发布
网友
(我真的想不出更好的标题了!)你知道吗
我有一套功能:
def foo(bar, baz) def spam(blah, etc, woof)
以及Namespace对象,其包括函数名和函数特定参数,例如args=(fun=foo, baz=111, baz=222)。如何调用函数并向其传递参数?像这样,但更好:
args=(fun=foo, baz=111, baz=222)
x = vars(args) fun = x['fun'] del x['fun'] fun(**x)
(我正在寻找一个很好的单线解决方案)。你知道吗
你想要x['fun'](**x)吗?你知道吗
x['fun'](**x)
只要函数采用**kwargs参数,这就可以工作。如果没有,您将不得不做一些事情来将您想要的条目从名称空间中分割出来。你知道吗
**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
"fun"
aDict.pop("fun")(**aDict)
你想要
x['fun'](**x)
吗?你知道吗只要函数采用
**kwargs
参数,这就可以工作。如果没有,您将不得不做一些事情来将您想要的条目从名称空间中分割出来。你知道吗我不知道你想要什么,但这会给你类似的结果:
然后你可以这样称呼它:
这将依次调用:
当
aDict
是在"fun"
键和其他参数下具有函数名的字典时,您可以尝试:aDict.pop("fun")(**aDict)
相关问题 更多 >
编程相关推荐