Из 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. Видимо, я неправильно понимаю правило. Кто-нибудь может это объяснить? Спасибо.