跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

Python全局变量:何时需要使用global关键字?

Python全局变量与
global
关键字:何时需要声明? Python中,全局变量的使用有时需要显式声明
global
关键字,有时则不需要,这常常让新手困惑。本文将通过示例详细解释
global
关键字的必要性。 问题源于:类方法试图访问和修改全局变量。仅读取时无需
global
;但修改时,必须使用
global
。 先看一段可运行代码: 立即学习 “ Python免费学习笔记(深入) ”;
from loguru import logger success_list = [1, 2, 3, 4, 5, 6, 7, 8] class MyClass: def run(self): logger.debug(success_list) # 只读取全局变量 MyClass().run() logger.debug(success_list)
MyClass
类的
run
方法只读取全局变量
success_list
,无需
global
关键字。Python解释器直接找到并使用全局变量。 Python 3.14.3 微软官方的 Python 扩展,是 VS Code 安装量最高的扩展(209M+)。集成 IntelliSense(通过 Pylance)、调试(通过 Python Debugger)、代码检查、格式化、重构和单元测试等功能。支持 Jupyter Notebook、虚拟环境管理和多 Python 版本切换。 下载 但如果
run
方法试图修改
success_list
:
from loguru import logger success_list = [1, 2, 3, 4, 5, 6, 7, 8] class MyClass: def run(self): logger.debug(success_list) success_list = success_list[1:] # 试图修改全局变量 logger.debug(success_list) MyClass().run() logger.debug(success_list)
这段代码会抛出
UnboundLocalError
异常。Python解释器认为
success_list
是局部变量,在赋值前就试图使用,导致错误。 解决方法是在
run
方法中声明
global
:
from loguru import logger success_list = [1, 2, 3, 4, 5, 6, 7, 8] class MyClass: def run(self): global success_list # 声明全局变量 logger.debug(success_list) success_list = success_list[1:] logger.debug(success_list) MyClass().run() logger.debug(success_list)
添加
global success_list
后,Python解释器知道
success_list
是全局变量,代码正确运行并修改了全局变量。 结论:关键在于是否修改全局变量。只读取无需
global
;修改时,必须使用
global
声明,避免局部变量遮蔽全局变量。

相关文章