[Python-ideas] Syntax for allowing extra keys when unpacking a dict as keyword arguments
Rhodri James
rhodri at kynesim.co.uk
Fri Apr 12 11:29:52 EDT 2019
On 12/04/2019 16:10, Viktor Roytman wrote:
> Currently, unpacking a dict in order to pass its items as keyword arguments
> to a function will fail if there are keys present in the dict that are
> invalid keyword arguments:
>
> >>> def func(*, a):
> ... pass
> ...
> >>> func(**{'a': 1, 'b': 2})
> Traceback (most recent call last):
> File "<stdin>", line 1, in <module>
> TypeError: func() got an unexpected keyword argument 'b'
>
> The standard approach I have encountered in this scenario is to pass in the
> keyword arguments explicitly like so
>
> func(
> a=kwargs_dict["a"],
> b=kwargs_dict["b"],
> c=kwargs_dict["c"],
> )
>
> But this grows more cumbersome as the number of keyword arguments grows.
>
> There are a number of other workarounds, such as using a dict comprehension
> to select only the required keys, but I think it would be more convenient
> to have this be a feature of the language. I don't know what a nice syntax
> for this would be, or even how feasible it is.
What circumstance do you want to do this in that simply passing the
dictionary as itself won't do for?
--
Rhodri James *-* Kynesim Ltd
More information about the Python-ideas
mailing list