当前位置:首页>python>Python入门|主题5:Python四层变量引用

Python入门|主题5:Python四层变量引用

  • 2026-09-08 00:28:42
Python入门|主题5:Python四层变量引用

本文目标:掌握Python四层变量引用规则


提出一个小问题,为什么引用全局变量要声明?要理解这个问题,核心是搞懂 Python 的变量作用域规则。

本质原因:Python 严格遵循 LEGB 作用域查找规则,这是变量查找、读取、修改的底层逻辑。


一、Python 的作用域查找规则(LEGB 规则)

Python 查找变量时会按以下顺序找,找到即停止,全程未找到则直接报错。

四层作用域顺序(优先级从高到低):

  • L(Local):局部作用域 → 函数内部定义的变量
  • E(Enclosing):嵌套外层函数作用域 → 闭包/嵌套函数的外层变量
  • G(Global):全局作用域 → 整个程序顶层定义的变量
  • B(Built-in):内置作用域 → Python 自带的变量/函数(print、len、range 等)

一句话总结查找顺序:局部 → 嵌套外层 → 全局 → 内置

作用域优先级:局部变量 > 嵌套变量 > 全局变量 > 内置变量

⚠️ 注意:自定义变量可能会覆盖内置名称,不推荐这样使用。


二、全局变量读写规则(重点)

在 Python 中,读取全局变量和修改全局变量的处理逻辑完全不同。

基于 LEGB 规则,Python 对全局变量做了明确区分:

  1. 仅读取全局变量:不需要任何声明,直接使用即可
  2. 修改全局变量:必须使用 global 关键字声明
  3. 嵌套作用域修改变量:必须使用 nonlocal 关键字(进阶知识点)

简单来说:读取全局变量无需声明,修改全局变量必须声明。


三、最佳实践(新手必看)

为了避免作用域混乱、变量冲突,建议遵循以下原则:

  • 尽量少用全局变量
  • 优先使用局部变量
  • 函数尽量通过传参、返回值交互数据
  • 不使用与内置函数/关键字重名的自定义变量

文末小互动

你在写代码时,遇到过全局变量报错的坑吗?评论区聊聊~

最新文章

随机文章