作为字典传递时如何 remove/ignore 意外的关键字参数?
How to remove/ignore unexpected keyword arguments when passing as dictionary?
以下代码
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
或发现它是意外的并以编程方式从字典中弹出它?
您可以使用 __code__.co_varnames
获取函数参数
expected = {key: pars[key] for key in f.__code__.co_varnames}
f(**expected)
您可以将函数定义为接受关键字参数,例如:
def f(par1, par2, **kwargs):
print("par1 = %s, par2 = %s" % (str(par1), str(par2)))
以下代码
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
或发现它是意外的并以编程方式从字典中弹出它?
您可以使用 __code__.co_varnames
expected = {key: pars[key] for key in f.__code__.co_varnames}
f(**expected)
您可以将函数定义为接受关键字参数,例如:
def f(par1, par2, **kwargs):
print("par1 = %s, par2 = %s" % (str(par1), str(par2)))