IDLE being too clever checking nonlocal declarations?
Peter Otten
__peter__ at web.de
Mon Oct 21 12:09:08 EDT 2013
Chris Angelico wrote:
> 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?
Yes, but you should still file a bug report ;)
> Tested with 3.3.0 on Windows XP.
Confirmed on Linux for 3.2.2, 3.3.0, and an outdated built of 3.4. It looks
like all versions of Python 3 are affected.
More information about the Python-list
mailing list