如何作为字典传递时删除/忽略意外的关键字参数?

时间:2017-11-23 17:14:34

标签: python-3.x dictionary keyword-argument argument-unpacking

以下代码

def f(par1, par2):
    print("par1 = %s, par2 = %s" % (str(par1), str(par2)))

pars = {
    'par1': 12,
    'par2': 13,
    'par3': 14
}

f(**pars)

引发错误

TypeError: f() got an unexpected keyword argument 'par3'

如何忽略par3或发现它是意外的并以编程方式从字典中弹出?

2 个答案:

答案 0 :(得分:2)

您可以使用__code__.co_varnames

获取函数参数
expected = {key: pars[key] for key in f.__code__.co_varnames}
f(**expected)

答案 1 :(得分:1)

您可以定义函数以接受关键字参数,如:

def f(par1, par2, **kwargs):
    print("par1 = %s, par2 = %s" % (str(par1), str(par2)))