On 08/10/2015 01:07 PM, Steven D'Aprano wrote: > On Sun, Aug 09, 2015 at 06:14:18PM -0700, David Mertz wrote: > > [...] >> That said, there *is* one small corner where I believe f-strings add >> something helpful to the language. There is no really concise way to spell: >> >> collections.ChainMap(locals(), globals(), __builtins__.__dict__). > > I think that to match the normal name resolution rules, nonlocals() > needs to slip in there between locals() and globals(). I realise that > there actually isn't a nonlocals() function (perhaps there should be?). > >> If we could spell that as, say `lgb()`, that would let str.format() or >> %-formatting pick up the full "what's in scope". To my mind, that's the >> only good thing about the f-string idea. > > I like the concept, but not the name. Initialisms tend to be hard > to remember and rarely self-explanatory. How about scope()?
I don't see how you're going to be able to do this in the general case. Not all variables end up in locals(). See PEP-498's discussion of closures, for example. Guido has already said locals() and globals() would not be part of the solution for string interpolation (also in the PEP). PEP-498 handles the non-general case: it parses through the string to find the variables used in the expressions, and then adds them to the symbol table. Eric. _______________________________________________ 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