[Python-ideas] Syntax for allowing extra keys when unpacking a dict as keyword arguments

Viktor Roytman viktor.roytman at gmail.com
Fri Apr 12 11:10:57 EDT 2019


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.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20190412/46d66009/attachment.html>


More information about the Python-ideas mailing list