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

Reply via email to