当前位置:嗨网首页>书籍在线阅读

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 没有定义。你想想看,这是有意义的。当程序在全局作用域中执行时,不存在局部作用域,所以不会有任何局部变量。这就是为什么只有全局变量能作用于全局作用域。