Unbinding a name referenced by an enclosing scope

Grigory Javadyan grigory.javadyan at gmail.com
Sun Feb 20 04:07:07 EST 2011


>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.



More information about the Python-list mailing list