Try typing this into IDLE: >>> def a(): def b(): nonlocal q SyntaxError: no binding for nonlocal 'q' found
In interactive command-line Python, this doesn't throw an error, and it works fine if the name is used later: >>> def a(): def b(): nonlocal q q+=1 q=1 b() return q >>> a() 2 But typing this into IDLE interactive mode requires some fiddling around with the editor. Is it trying to be too clever? Am I doing something that makes no sense? Tested with 3.3.0 on Windows XP. ChrisA -- https://mail.python.org/mailman/listinfo/python-list