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.
Advertisement
Answer
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