[Python-Dev] Closures / Python Scopes

Terry Reedy tjreedy at udel.edu
Fri Nov 12 21:38:19 CET 2010


On 11/12/2010 3:08 PM, Hatem Nassrat wrote:
> A colleague of mine came across something anecdotal when working with
> lambdas, it is expressed by the following code snippet.
>
>    In [1]: def a():
>       ...:     for i in range(10):
>       ...:         def b():
>       ...:             return i
>       ...:         yield b
>       ...:
>       ...:
>
>    In [2]: funcs = list(a())
>
>    In [3]: print [f() for f in funcs]
>    [9, 9, 9, 9, 9, 9, 9, 9, 9, 9]
>
>
> I understand that for loops in python do not have a scope, neither do
> if statements, and python is awesome for that. Is this something
> accidental? i.e. will python ever evolve into having scopes for if and
> for loops (and other blocks that are not functions)? the reason I ask
> is with the introduction of
> http://docs.python.org/py3k/reference/simple_stmts.html#nonlocal it
> seems like something that can happen.

Question/discussion issues like this belong on python-list or 
python-ideas list.

-- 
Terry Jan Reedy



More information about the Python-Dev mailing list