Python作用域

admin 2026-01-01 05:06:45 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文解析了Python作用域概念,即变量在代码中可被访问的范围,重点阐述了LEGB变量查找规则,即按Local、Enclosing、Global、Built-in顺序查找。通过对比局部与全局变量的生命周期及访问权限,揭示了变量报错的根源,旨在帮助开发者理清作用域认知,避免常见编程陷阱。 综合评分: 75 文章分类: 安全开发


cover_image

Python 作用域

原创

Lino

网络技术联盟站

2025年12月31日 18:00 江苏

各位同学,大家好!我是你们的 Python 讲师 Lino。

在 Python 学习中,作用域不是一个难点,却是一个高频踩坑点

很多代码“看起来没问题”,一运行却报错;

很多变量“明明已经定义”,函数里却偏偏访问不到。

问题的根源,几乎都可以归结为四个字:作用域认知不清

这节课,我们不绕弯子,直接从 Python 的作用域规则讲起,一层一层拆清楚。

什么是作用域?

作用域(Scope),指的是:

一个变量在代码中可以被访问和生效的范围

在 Python 中,作用域并不是“写在哪一行”,而是由代码结构和命名空间共同决定的。

Python 遵循一个非常稳定、也非常重要的查找顺序:

LEGB 规则

LEGB 规则:变量查找的唯一顺序

当 Python 解释器遇到一个变量名时,它会按下面的顺序查找:

  1. L(Local):当前函数内部
  2. E(Enclosing):外层函数(嵌套函数)
  3. G(Global):模块级变量
  4. 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 作用域》

Python作用域 网络安全文章

Python作用域

文章总结: 本文解析了Python作用域概念,即变量在代码中可被访问的范围,重点阐述了LEGB变量查找规则,即按Local、Enclosing、Global、B
评论:0   参与:  0