登录
首页 >  文章 >  python教程

Python全局变量何时用global关键字

时间:2025-03-15 13:46:09 426浏览 收藏

亲爱的编程学习爱好者,如果你点开了这篇文章,说明你对《Python全局变量使用global关键字的时机》很感兴趣。本篇文章就来给大家详细解析一下,主要介绍一下,希望所有认真读完的童鞋们,都有实质性的提高。

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

Python全局变量与global关键字:何时需要声明?

Python中,全局变量的使用有时需要显式声明global关键字,有时则不需要,这常常让新手困惑。本文将通过示例详细解释global关键字的必要性。

问题源于:类方法试图访问和修改全局变量。仅读取时无需global;但修改时,必须使用global

先看一段可运行代码:

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解释器直接找到并使用全局变量。

但如果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声明,避免局部变量遮蔽全局变量。

本篇关于《Python全局变量何时用global关键字》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于文章的相关知识,请关注golang学习网公众号!

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>