Python中的全局变量

Python中的全局变量在本文章中 我们来讨论一下 python 中的全局变量 我们将学习如何定义全局变量 然后如何在函数中访问它们 以及如何在函数中修改全局变量的值 全局变量 python 的代码结构一般按照 shebang import 模块 全局变量 函数定义 执行代码的顺序进行编写 可以看出全局变量的定义处于比较靠前的位置 这样就避免了因为全局变量定义靠后 但 python 解释器逐行解释 以至于前面的代码无法识别局部变量的问题 全局变量的作用域 全局变量定义在函数的外部 在函数内部定义的变量称为局部变量 pyt

在本文章中,我们来讨论一下python中的全局变量,我们将学习如何定义全局变量,然后如何在函数中访问它们,以及如何在函数中修改全局变量的值。

全局变量:

python的代码结构一般按照shebang、import模块、全局变量、函数定义、执行代码的顺序进行编写,可以看出全局变量的定义处于比较靠前的位置,这样就避免了因为全局变量定义靠后,但python解释器逐行解释,以至于前面的代码无法识别局部变量的问题。

全局变量的作用域:

全局变量定义在函数的外部,在函数内部定义的变量称为局部变量,python程序中的所有部分都可以访问全局变量,局部变量只能在本函数内可用,并且在函数中,变量的使用顺序是:局部变量 > 全局变量,也就是说,如果局部变量和全局变量都用a表示,那么调用a时,函数会优先调用局部变量。

全局变量实例:

我们按照文章开头讲解的代码结构顺序,展示一个简单的全局变量的实例

Python中的全局变量

输出:

Python中的全局变量

变量”gl_result”是在函数外部定义的,因此,他是一个全局变量。

在函数内部对全局变量赋值

如果我们在函数内部对全局变量进行赋值操作,那么全局变量的值会改变吗?

Python中的全局变量

输出:

Python中的全局变量

可以看出,函数内部的gl_result的值已经被我们修改成100了,但是函数外部的变量值仍为1,说明通过调用函数,我们没能修改到全局变量的值,只能修改函数内部的值,这又是为什么呢?

因为,如果在函数内部定义了一个与全局变量相同名称的变量,那么函数就会认为这是在创建一个与全局变量名称相同的变量,所以我们实际修改到的值只是函数中的局部变量的值,并非我们想要修改的全局变量。我们通过pycharm的提示也可以看到

Python中的全局变量

有一个shadows name在函数外部,在PyCharm中,函数内部的变量,如果和函数被调用的外部的变量一样的话,就会被叫做shadows name,不容易被觉察到。

那么我们就不能在函数内部修改全局变量的值吗?当然不是,在python的函数中可以通过global关键字,调用并修改全局变量的值!

在函数内部修改全局变量的值

我们只需要在需要使用全局变量的前一行代码加上global + 全局变量,就可以随意修改全局变量的值啦!

Python中的全局变量

可以看出,pycharm这次就没再提示shadows name了,因为我们从头到尾都是在使用同一个变量,即全局变量。所以我们一定要牢记,想要对全局变量进行修改时,在函数内部一定要加上global关键字,不然函数就会自动创建一个局部变量,使人产生误解。

Tips:

1、注意查看pycharm的warning,有时候可以帮助我们避免bug

2、在创建全局变量是按照gl_ + 全局变量 或者 global_ + 全局变量的命名方式,可以帮助我们更好地区分全局变量和局部变量

有错误之处感谢指正,欢迎交流,一起学习!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/228357.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午7:13
下一篇 2026年3月16日 下午7:13


相关推荐

  • navicat for mysq15l激活码(注册激活)

    (navicat for mysq15l激活码)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlEC87GSLRKZ-eyJsaWNlbnNlSWQi…

    2022年3月28日
    51
  • 卷积操作的参数量和FLOPs

    卷积操作的参数量和FLOPs卷积操作的参数量和FLOPs  这里首先需要辨析一个概念就是FLOPs和FLOPS可以看到简写的差别仅仅是一个字母大小写的区别。  FLOPS(floating-pointoperationspersecond),这个缩写长这个样子确实也很奇怪,大致概念就是指每秒浮点数运算次数,最后一个S是秒(second)的缩写,是计组中的概念,用来描述计算机的运算速度。  FLOPs(floati…

    2022年5月27日
    33
  • Notepad++ 通过正则表达式批量查找替换数据和格式化JSON数据

    Notepad++ 通过正则表达式批量查找替换数据和格式化JSON数据打开 Notepad 点击插件点击 pluginmanage 点击 showpluginma 点击 available 选择 JSONview 或 JSTool 点击 Install 重新打开 Notepad 就可以了使用快捷键 Ctrl Alt M 和 Ctrl Alt J 图文请看 http jingyan

    2026年3月19日
    2
  • e5续订程序_office e5开发者

    e5续订程序_office e5开发者E5调用API续订服务:Microsoft365E5RenewX:功能性:网页访问部分继承于Microsoft365E5RenewWeb并做了部分改进,数据库改进现在支持单用户多运行账号;内核API调用继承于Microsoft365E5RenewPlus;可部署性:支持开放站点部署和私享部署,私享部署不再强制要求配置Https和OAuth平台兼容性:使用Asp.NetCore作为跨平台框架增适用于WindowsLinuxMacOS…

    2022年9月30日
    3
  • 级联分类器原理(级联器是什么)

    级联分类器即为Emgucv中的CascadeClassifier。使用CascadeClassifier来加载一个.xml分类器文件,然后使用DetectMultiScale函数来对图片进行检测。这是DetectMultiScale函数。publicRectangle[]DetectMultiScale(IInputArrayimage,doublescaleFactor=1.

    2022年4月10日
    288
  • 在linux中hdparm作用,hdparm命令

    在linux中hdparm作用,hdparm命令hdparm 命令提供了一个命令行的接口用于读取和设置 IDE 或 SCSI 硬盘参数 语法 hdparm 选项 参数 选项 a 设定读取文件时 预先存入块区的分区数 若不加上选项 则显示目前的设定 A lt 0 或 1 gt 启动或关闭读取文件时的快取功能 c 设定 IDE32 位 I O 模式 C 检测 IDE 硬盘的电源管理模式 d lt 0 或 1 gt 设定磁盘的 DMA 模式 f 将内存缓冲区的数据写入硬

    2026年3月16日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号