IDLE being too clever checking nonlocal declarations?
Chris Angelico
rosuav at gmail.com
Mon Oct 21 11:06:00 EDT 2013
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
More information about the Python-list
mailing list