On Sun, Oct 7, 2018 at 11:42 AM João Santos <j...@jsantos.eu> wrote:
> *locals *and *globals* are documented as dictionaries (for example exec's > documentation states that " If only *globals* is provided, it must be a > dictionary") > well, that is specifically about exec() -- it may or may not apply to everywhere nameapaces are used in the interpreter... > but __dict__ is described as " [a] dictionary or other mapping object". > exactly. -CHB On Sun, 7 Oct 2018 at 19:38, Chris Barker via Python-Dev < > python-dev@python.org> wrote: > >> 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/jmcs%40jsantos.eu >> > -- 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