Guido van Rossum wrote:
Why not make local variables attributes of the function, i.e. replace:
def inner(): global x in outer x = 42
def inner(): outer.x = 42
Because this already means something! outer.x refers to the attribute x of function outer. That's quite different than local variable x of the most recent invocation of outer on the current thread's call stack!
I guess unifying them both (somewhat like the instance attribute lookup rule) won't work.
Global variables could then be assigned via: global.x = 42
This has a tiny bit of appeal, but not enough to bother.
Bye, Walter Dörwald