如何在变量中为python函数构建参数

art*_*bot 5 python python-3.x

我有一个 Python (3) 函数

def f(a, b, c=1, d=2):
    pass
Run Code Online (Sandbox Code Playgroud)

我想在代码中建立一个参数列表。实际用例是基于一些命令行参数解析来执行此操作,但这是一个一般性问题(我对 python 相当陌生)例如

myargs = {}
myargs['positionalParams'] = ['foo', 'bar']
myargs['c']=2
myargs['d']=3
f(myargs)
Run Code Online (Sandbox Code Playgroud)

我知道我可以f(*somelist)将列表扩展为单独的参数,但是如何混合使用位置参数和可选参数呢?或者我做两次,一次用于位置,一次用于其他人的字典?

dec*_*eze 5

args = ['foo', 'bar']
kwargs = {'c': 2, 'd': 3}
f(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

请注意,这也可以正常工作:

kwargs = {'a': 'foo', 'b': 'bar', 'c': 2, 'd': 3}
f(**kwargs)
Run Code Online (Sandbox Code Playgroud)