答案:Python变量作用域遵循LEGB规则,即局部(L)→嵌套(E)→全局(G)→内置(B)。局部作用域限函数内访问;嵌套作用域允许内层函数引用外层函数变量,支持闭包;全局作用域在模块顶层定义,跨函数共享;内置作用域含预定义标识符如print、len。查找变量按LEGB顺序进行,理解该规则有助于避免命名冲突和实现闭包逻辑。

Python 中变量的作用域决定了变量在程序中的可访问范围。主要有四种作用域类型,通常被称为 LEGB 规则:
L:局部作用域(Local)
局部作用域指的是函数内部定义的变量,只能在该函数内部访问。
- 在函数内通过赋值创建的变量默认属于局部作用域。
- 函数执行结束后,局部变量会被销毁。
def func():
x = 10 # x 是局部变量
print(x)
func() # 输出 10
# print(x) # 这会报错,x 未定义E:嵌套作用域(Enclosing)
嵌套作用域指的是在嵌套函数中,内部函数可以访问外部函数的变量。
- 当内部函数引用一个变量时,如果本地没有,会向外层函数查找。
- 这是闭包实现的基础。
def outer():
y = 20
def inner():
print(y) # 可以访问外层函数的 y
inner()
outer() # 输出 20G:全局作用域(Global)
全局作用域指的是在模块文件顶层定义的变量,可以在整个模块中访问。
立即学习“Python免费学习笔记(深入)”;
十天学会易语言图解教程用图解的方式对易语言的使用方法和操作技巧作了生动、系统的讲解。需要的朋友们可以下载看看吧!全书分十章,分十天讲完。 第一章是介绍易语言的安装,以及运行后的界面。同时介绍一个非常简单的小程序,以帮助用户入门学习。最后介绍编程的输入方法,以及一些初学者会遇到的常见问题。第二章将接触一些具体的问题,如怎样编写一个1+2等于几的程序,并了解变量的概念,变量的有效范围,数据类型等知识。其后,您将跟着本书,编写一个自己的MP3播放器,认识窗口、按钮、编辑框三个常用组件。以认识命令及事件子程序。第
- 函数内部若要修改全局变量,需使用
global关键字声明。 - 导入模块后,其全局变量也可被访问(取决于导入方式)。
x = 30 # 全局变量def func(): global x x = 40 # 修改全局变量 func() print(x) # 输出 40
B:内置作用域(Built-in)
内置作用域包含 Python 预定义的标识符,如 print、len、True 等。
- 这些名称在程序启动时自动可用,位于最外层作用域。
- 尽量避免重写内置名称,以免造成意外行为。
print(len("hello")) # len 和 print 都是内置函数
# len = 10 # 不推荐,会覆盖内置函数Python 按照 LEGB 的顺序查找变量:从局部到嵌套,再到全局,最后到内置作用域。
基本上就这些。理解这四种作用域有助于写出更清晰、不易出错的代码。特别是处理闭包和变量修改时,作用域规则尤为重要。










