How does one ignore unexpected keyword arguments passed to a function?
dictionary, function, python
Solution
As an extension to the answer posted by @Bas, I would suggest to add the kwargs arguments (variable length keyword arguments) as the second parameter to the function
>>> def f (a=None, **kwargs):
print a
>>> dct2 = {"a":"Foo", "b":"Bar"}
>>> f(**dct2)
Foo
This would necessarily suffice the case of
- to just ignore any keys that are not parameter names
- However, it lacks the default values of parameters, which is a nice feature that it would be nice to keep
Problem
Suppose I have some function, `f`: ``` def f (a=None): print a ``` Now, if I have a dictionary such as `dct = {"a":"Foo"}`, I may call `f(**dct)` and get the result `Foo` printed. However, suppose I have a dictionary `dct2 = {"a":"Foo", "b":"Bar"}`. If I call `f(**dct2)` I get a ``` TypeError: f() got an unexpected keyword argument 'b' ``` Fair enough. However, is there anyway to, in the definition of `f` or in the calling of it, tell Python to just ignore any keys that are not parameter names? Preferable a method that allows defaults to be specified.