[Python-Dev] Arbitrary non-identifier string keys when using **kwargs

Steven D'Aprano steve at pearwood.info
Thu Oct 4 04:56:34 EDT 2018

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?



More information about the Python-Dev mailing list