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 <storch...@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@python.org > https://mail.python.org/mailman/listinfo/python-dev > Unsubscribe: > https://mail.python.org/mailman/options/python-dev/brett%40python.org >
_______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com