On Fri, Oct 5, 2018 at 3:01 PM Brett Cannon <br...@python.org> wrote:
> I'm also fine with saying that keys in **kwargs that are not proper > identifiers is an implementation detail. > It's not just **kwargs -- you can also use arbitrary names with setattr() / getattr() : In [6]: setattr(foo, "4 not an identifier", "this works") In [7]: getattr(foo, "4 not an identifier") Out[7]: 'this works' Which brings up a question I've had for years -- is the fact that cPython uses a regular old dict for namespaces (and **kwargs) part of the language spec, or an implementation detail? I would say that for the get/setattr() example, it is kinda handy when you want to use a class instance to model some external data structure that may have different identifier rules. Though I tend to think that's mingling data and code too much. -CHB > > 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/chris.barker%40noaa.gov > -- Christopher Barker, Ph.D. Oceanographer Emergency Response Division NOAA/NOS/OR&R (206) 526-6959 voice 7600 Sand Point Way NE (206) 526-6329 fax Seattle, WA 98115 (206) 526-6317 main reception chris.bar...@noaa.gov
_______________________________________________ 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