Grigory Javadyan wrote: >>From the Python Language Reference (v 3.1): > >> It is illegal to unbind a name referenced by an enclosing scope; the >> compiler will report a SyntaxError. > > But when I run the following code: > > a = 3 > def x(): > global a > del(a) > > print(a) > x() > > it works fine; and when I change the order of calls: > > x() > print(a) > > I get a NameError, not a SyntaxError. Apparently, I'm not > understanding the rule correctly. Can anyone explain it? Thanks.
The line you quote is probably meant to describe the following: >>> def f(): ... a = 42 ... def g(): ... nonlocal a ... del a ... SyntaxError: can not delete variable 'a' referenced in nested scope Please file a documentation bug if you can come up with a clarification. -- http://mail.python.org/mailman/listinfo/python-list