On 2018-04-29 10:20 PM, Ethan Furman wrote:
On 04/29/2018 01:20 PM, Tim Peters wrote:

So, e.g.,

"""
a = 42

def showa():
     print(a)

def run():
     global a

     local a: # assuming this existed
         a = 43
         showa()
     showa()
"""

would print 43 and then 42.  Which makes "local a:" sound senseless on
the face of it ;-)  "shadow" would be a more descriptive name for what
it actually does.

Yeah, "shadow" would be a better name than "local", considering that it effectively temporarily changes what other functions see as global.  Talk about a debugging nightmare!  ;)

That ain't shadow. That is dynamic scoping.

Shadowing is something different:

def f():
    a = 42
    def g():
        print(a)
    local a:
        a = 43
        g()
    g()

should print "42" both times, *if it's lexically scoped*.

If it's lexically scoped, this is just adding another scope: blocks. (instead of the smallest possible scope being function scope)


--
~Ethan~
_______________________________________________
Python-ideas mailing list
[email protected]
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/

_______________________________________________
Python-ideas mailing list
[email protected]
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to