[Python-ideas] Tweaking closures and lexical scoping to include the function being defined
Greg Ewing
greg.ewing at canterbury.ac.nz
Tue Sep 27 09:03:37 CEST 2011
Carl Matthew Johnson wrote:
> This seems like a kind of Python 4000 feature though…
> At the very least you'd need to preserve the ability to use
> "old-style" for-loops by writing something like,
>
> i = None
> for i in things:
> ...
>
> if i is not None: print("Processed one or more things...")
There's actually a way of implementing this so that the
above code continues to work. If the loop variable is
referenced by a nested function, it will be in a cell.
All you need to do is create a *new* cell each time
round the loop instead of replacing the contents of the
existing cell. Code after the loop will then see
whatever was last assigned to the loop variable, as
it does currently.
--
Greg
More information about the Python-ideas
mailing list