假设我有一些函数,f
:
def f (a=None):
print a
现在,如果我有一个字典,例如 dct = {"a":"Foo"}
,我可以调用 f(**dct)
并获取结果 Foo
打印出来。
但是,假设我有一个字典 dct2 = {"a":"Foo", "b":"Bar"}
。如果我调用 f(**dct2)
我会得到一个
TypeError: f() got an unexpected keyword argument 'b'
很公平。但是,无论如何,在 f
的定义中或在它的调用中,是否告诉 Python 忽略任何不是参数名称的键?首选允许指定默认值的方法。
最佳答案
作为@Bas 发布的答案的扩展,我建议将 kwargs 参数(可变长度关键字参数)添加为函数的第二个参数
>>> def f (a=None, **kwargs):
print a
>>> dct2 = {"a":"Foo", "b":"Bar"}
>>> f(**dct2)
Foo
这必然足以满足
的情况- 忽略任何不是参数名称的键
- 但是,它缺少参数的默认值,这是一个不错的功能,如果保留会很好
关于python - 如何忽略传递给函数的意外关键字参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26515595/