[Python-Dev] Explicit Lexical Scoping (pre-PEP?)

Scott Dial scott+python-dev at scottdial.com
Wed Jul 5 11:40:40 CEST 2006

Guido van Rossum wrote:
> Would this also use ..num to refer to num in an outer scope two levels removed?

I realize this was a wink, but it is a valid problem with the 

def foo(n):
   def bar(n):
     def baz():
       return .n

So, which 'n' outer 'n' is being referenced? Seems like you need to 
either be able to do multiple dots (ugly, hard to read) or only do a 
single-step outwards reference. But then that has it's own problems, if 
I meant the 'n' passed into 'foo', then I have to resort to such 
nonsense as:

def foo(n):
   def bar(n):
     foon = .n
     def baz():
       return .foon

It would almost be cute if you could do something like ".foo.n" to get 
to the correct variable. If python maintains it's current scoping rules, 
then it seems like it works out, but I haven't thought this one all the 
way through.

def foo(n):
   def bar(n):
     def baz():
       return .foo.n + .bar.n

Scott Dial
scott at scottdial.com
scodial at indiana.edu

More information about the Python-Dev mailing list