来自 Python 语言参考(v 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。显然,我没有正确理解规则。谁能解释一下?谢谢。