Hrvoje Niksic wrote: > Tommy Nordgren <[EMAIL PROTECTED]> writes: > >> Given the following: >> def outer(arg) >> avar = '' >> def inner1(arg2) >> # How can I set 'avar' here ? > > I don't think you can, until Python 3: > http://www.python.org/dev/peps/pep-3104/
But it definitely does work in Python 3 if you use 'nonlocal':: Python 3.0a1+ (py3k:58681, Oct 26 2007, 19:44:30) [MSC v.1310 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> def f(): ... x = 1 ... def g(): ... nonlocal x ... x = 2 ... print(x) ... g() ... print(x) ... >>> f() 1 2 That said, I'd like to see the reason you think you want to do this. STeVe -- http://mail.python.org/mailman/listinfo/python-list