[Python-Dev] Arbitrary non-identifier string keys when using **kwargs (original) (raw)
Chris Barker chris.barker at noaa.gov
Sun Oct 7 15:48:54 EDT 2018
- Previous message (by thread): [Python-Dev] Arbitrary non-identifier string keys when using **kwargs
- Next message (by thread): [Python-Dev] Arbitrary non-identifier string keys when using **kwargs
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Sun, Oct 7, 2018 at 11:42 AM João Santos <jmcs at 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 at python.org> wrote: >>> On Fri, Oct 5, 2018 at 3:01 PM Brett Cannon <brett at 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 <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 >>>>>>> _________________________ >>> 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/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.Barker at noaa.gov >> _________________________ >> 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/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.Barker at noaa.gov -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.python.org/pipermail/python-dev/attachments/20181007/7fce87df/attachment.html>
- Previous message (by thread): [Python-Dev] Arbitrary non-identifier string keys when using **kwargs
- Next message (by thread): [Python-Dev] Arbitrary non-identifier string keys when using **kwargs
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]