请考虑以下内容:
def foo(a, *args):
pass
def bar(func, funcargs={}, *args, **kwargs):
...
func(**funcargs)
...
在我不能直接调用foo
的情况下,只能将其传递给带有参数的bar
。因此,我总是总是事先创建dict
的{{1}}。
现在我当前的funcargs
的签名为foo()
,我需要传递一些foo(a, *args, **kwargs)
。但是我无法创建*args
的{{1}}并解压缩dict
的列表。
我该如何解决?
答案 0 :(得分:0)
将显式序列传递到bar
。
def bar(func, funcargs, *args, **kwargs):
...
func(*funcargs)
...
bar(foo, [1,2,3], 9, a="b")
答案 1 :(得分:0)
与args
的{{1}}和kwargs
类似,您还必须分别传递bar
的位置和关键字参数。为了与命名方案保持一致,请将func
设为func_args
,将tuple
设为func_kwargs
:
dict
这会将位置参数和关键字参数都解压缩到def bar(func, func_args=(), func_kwargs={}, *args, **kwargs):
...
func(*func_args, **func_kwargs)
...
中:
func