Отмена привязки имени, на которое ссылается охватывающая область

Из Python Справочник по языку (версия 3.1, см. Здесь - http://docs.python.org/py3k/reference/executionmodel. html # naming-and-binding ):

Отмена привязки имени, на которое ссылается охватывающая область, недопустима; компилятор сообщит об ошибке SyntaxError.

Но когда я запускаю следующий код:

a = 3

def x():
  global a
  del(a)

print(a)
x()

, он работает нормально; и когда я меняю порядок вызовов:

x()
print(a)

я получаю NameError, а не SyntaxError. Видимо, я неправильно понимаю правило. Кто-нибудь может это объяснить? Спасибо.

6
задан 20 February 2011 в 09:29
поделиться