[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