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:

PythonWin 2.4.3 (#69, Mar 29 2006, 17:35:34) [MSC v.1310 32 bit
(Intel)] on win32.
Portions Copyright 1994-2004 Mark Hammond ([EMAIL PROTECTED]) -
see 'Help/About PythonWin' for further copyright information.
>>> def foo():
...     def nestedfunc(bar):
...             print bar, ';', localvar
...             localvar += 1
...     localvar=0
...     nestedfunc('bar')
...
>>> foo()
bar =Traceback (most recent call last):
  File "<interactive input>", line 1, in ?
  File "<interactive input>", line 6, in foo
  File "<interactive input>", line 3, in nestedfunc
UnboundLocalError: local variable 'localvar' referenced before
assignment
>>>

This is entirely counter-intuitive to me, and searching the manual for
nested scoping rules and for augmented assignment rules, I still feel
that I couldn't have predicted this from the docs.

Is this an implementation artifact, bug, or should it really just
follow logically from the language definition?

Regards,

--Tim

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to