Ignore additional keyword arguments in python
本问题已经有最佳答案,请猛点这里访问。
假设我有一个函数
1 2 | def foo(x): ... |
当我用字典
1 2 3 | >>> foo(**{ 'x': 42, 'y': 23 }) ... TypeError: foo() got an unexpected keyword argument 'y' |
是否有一种好的方法可以使用关键字参数进行函数调用,而其他关键字参数只是被忽略?
到目前为止,我的解决方案是:我可以定义一个助手函数:
1 2 3 4 5 6 | import inspect def call_with_kwargs(func, kwargs): params = inspect.getargspec(func).args return func(**{ k: v for k,v in kwargs.items() if k in params}) |
现在我可以做
1 2 | >>> call_with_kwargs(foo, { 'x': 42, 'y': 23 }) 42 |
有更好的方法吗?
如果修改函数是可以的,那么只需添加一个catch all
1 2 | def foo(x, **kw): # ... |
忽略函数中捕获的任何