Python函数作用域快速掌握技巧
作者:水悠悠予安
时间:2026-03-01
浏览:4
LEGB规则指Python按局部(L)、外层函数(E)、全局(G)、内置(B)顺序查找变量,如函数中先查局部变量,再向外逐层查找,直到内置作用域。
本文目录
LEGB规则指Python按局部(L)、外层函数(E)、全局(G)、内置(B)顺序查找变量,如函数中先查局部变量,再向外逐层查找,直到内置作用域。

理解Python函数的作用域,关键在于搞清变量在不同层级的可见性和查找规则。掌握“LEGB”原则就能快速理清逻辑。
什么是LEGB规则?
Python按照特定顺序查找变量,这个顺序就是LEGB:
- L(Local):函数内部的局部作用域
- E(Enclosing):外层函数的作用域(闭包)
- G(Global):模块级别的全局作用域
- B(Built-in):内置作用域(如print、len等)
Python从内到外依次查找,一旦找到就停止。比如在函数中使用一个变量,先看是否是局部变量,再看外层函数有没有定义,然后看全局,最后查内置。
局部与全局变量的区别
在函数内部赋值的变量默认是局部的,不会影响全局同名变量。
x = 10def func():
x = 20
print(x)
func() # 输出 20
print(x) # 输出 10
如果想在函数里修改全局变量,必须用global关键字声明。
x = 10def func():
global x
x = 20
func()
print(x) # 输出 20
嵌套函数与nonlocal关键字
当函数嵌套时,内层函数可以读取外层函数的变量,但不能直接修改。要修改需使用nonlocal。
def outer():x = 10
def inner():
nonlocal x
x = 20
inner()
print(x)
outer() # 输出 20
没有nonlocal,inner函数中的x会被当成新的局部变量,外层x不会变。
实际练习建议
最快掌握的方法是动手写几个嵌套函数,故意不加global或nonlocal,观察输出结果。再逐步加上关键字对比变化。常见误区包括:
- 误以为函数内部能直接改全局变量
- 在if或for块中定义变量,误以为有独立作用域(其实没有)
- 闭包中引用外层变量时,未理解延迟绑定问题
基本上就这些。多试几次,作用域的逻辑自然就清晰了。
作者最新文章
立刻MV如何查看立刻MV官方操作指引文档
2026-11-02 14:05
抖音创作平台官网登录入口
2026-11-02 10:38
Xshell连接SSH失败怎么办?5步排查网络、代理与认证问题
2026-10-30 14:30
樱花动漫官方正版官网入口在哪_樱花动漫网址2027最新分享
2026-10-28 19:21
AO3永久可用网址分享 ao3实时访问入口
2026-10-28 13:16
上一篇:
Win10查看主板型号方法
下一篇:
食物热量大全及常见食物热量表
热门文章
更多
精品专题
更多
Mac软件
更多
WINDOWS
更多

































