Unbinding a name referenced by an enclosing scope
__peter__ at web.de
Sun Feb 20 11:05:46 CET 2011
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
> it works fine; and when I change the order of calls:
> 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.
More information about the Python-list