文章总结: 本文解析了Python作用域概念,即变量在代码中可被访问的范围,重点阐述了LEGB变量查找规则,即按Local、Enclosing、Global、Built-in顺序查找。通过对比局部与全局变量的生命周期及访问权限,揭示了变量报错的根源,旨在帮助开发者理清作用域认知,避免常见编程陷阱。 综合评分: 75 文章分类: 安全开发
Python 作用域
原创
Lino
网络技术联盟站
2025年12月31日 18:00 江苏
各位同学,大家好!我是你们的 Python 讲师 Lino。
在 Python 学习中,作用域不是一个难点,却是一个高频踩坑点。
很多代码“看起来没问题”,一运行却报错;
很多变量“明明已经定义”,函数里却偏偏访问不到。
问题的根源,几乎都可以归结为四个字:作用域认知不清。
这节课,我们不绕弯子,直接从 Python 的作用域规则讲起,一层一层拆清楚。
什么是作用域?
作用域(Scope),指的是:
一个变量在代码中可以被访问和生效的范围
在 Python 中,作用域并不是“写在哪一行”,而是由代码结构和命名空间共同决定的。
Python 遵循一个非常稳定、也非常重要的查找顺序:
LEGB 规则
LEGB 规则:变量查找的唯一顺序
当 Python 解释器遇到一个变量名时,它会按下面的顺序查找:
- L(Local):当前函数内部
- E(Enclosing):外层函数(嵌套函数)
- G(Global):模块级变量
- B(Built-in):内建命名空间(如 len、int)
一旦在某一层找到,查找立即停止。
示例 1:最简单的 Local 作用域
def func(): x = 10 print(x)
func() print(x)
运行结果:
- x 只存在于 func() 的局部作用域
- 函数结束,变量生命周期结束
- 外部无法访问
Global 作用域
示例 2:函数访问全局变量
count = 100
def show(): print(count)
show()
这是完全合法的。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:网络技术联盟站 Lino《Python 作用域》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论