[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