09-局部变量不能在全局作用域内使用
3.6.1 局部变量不能在全局作用域内使用
运行下面的程序,它在运行时会产生错误:
def spam():
❶ eggs = 31337
spam()
print(eggs)
如果运行这个程序,输出结果将是:
Traceback (most recent call last):
File "C:/test3784.py", line 4, in <module>
print(eggs)
NameError: name 'eggs' is not defined
发生错误是因为, eggs
变量只属于 spam()
调用所创建的局部作用域❶。在程序执行从 spam
返回后,该局部作用域就被销毁了,不再有名为 eggs
的变量。所以当程序试图执行 print(eggs)时
,Python就报错,说 eggs
没有定义。你想想看,这是有意义的。当程序在全局作用域中执行时,不存在局部作用域,所以不会有任何局部变量。这就是为什么只有全局变量能作用于全局作用域。