[Python-Dev] Arbitrary non-identifier string keys when using **kwargs (original) (raw)

Brett Cannon brett at python.org
Fri Oct 5 17:50:30 EDT 2018


I'm also fine with saying that keys in **kwargs that are not proper identifiers is an implementation detail.

On Thu, 4 Oct 2018 at 02:20, Serhiy Storchaka <storchaka at gmail.com> wrote:

04.10.18 11:56, Steven D'Aprano пише: > While keyword arguments have to be identifiers, using **kwargs allows > arbitrary strings which aren't identifiers: > > py> def spam(**kwargs): > .... print(kwargs) > .... > py> spam(**{"something arbitrary": 1, '\n': 2}) > {'something arbitrary': 1, '\n': 2} > > > There is some discussion on Python-Ideas on whether or not that > behaviour ought to be considered a language feature, an accident of > implementation, or a bug. > > Can we get some guidence on this please?

This is an implementation detail. Currently CPython doesn't ensure that keyword argument names are identifiers for performance reasons. But this can be changed in future versions or in other implementations.


Python-Dev mailing list Python-Dev at python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/brett%40python.org -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.python.org/pipermail/python-dev/attachments/20181005/aa9b7ff3/attachment-0001.html>



More information about the Python-Dev mailing list