Tim N. van der Leeuw wrote: > Hi, > > The following might be documented somewhere, but it hit me unexpectedly > and I couldn't exactly find this in the manual either. > > Problem is, that I cannot use augmented assignment operators in a > nested scope, on variables from the outer scope:
<snip/> > Is this an implementation artifact, bug, or should it really just > follow logically from the language definition? >From the docs: """ An augmented assignment expression like x += 1 can be rewritten as x = x + 1 to achieve a similar, but not exactly equal effect. In the augmented version, x is only evaluated once. Also, when possible, the actual operation is performed in-place, meaning that rather than creating a new object and assigning that to the target, the old object is modified instead. """ The first part is the important one. If you expand x += 1 to x = x + 1 it becomes clear under the python scoping rules that x is being treated as a local to the inner scope. There has been a discussion about this recently on python-dev[1] and this NG - google for it. Regards, Diez [1] http://mail.python.org/pipermail/python-dev/2006-June/065902.html -- http://mail.python.org/mailman/listinfo/python-list