首页 > 编程语言 >Python中的全局变量

Python中的全局变量

时间:2024-09-23 14:21:32浏览次数:3  
标签:函数 修改 Python 局部变量 python 全局变量 变量

在本文章中,我们来讨论一下python中的全局变量,我们将学习如何定义全局变量,然后如何在函数中访问它们,以及如何在函数中修改全局变量的值。
全局变量:
python的代码结构一般按照shebang、import模块、全局变量、函数定义、执行代码的顺序进行编写,可以看出全局变量的定义处于比较靠前的位置,这样就避免了因为全局变量定义靠后,但python解释器逐行解释,以至于前面的代码无法识别局部变量的问题。
全局变量的作用域:
全局变量定义在函数的外部,在函数内部定义的变量称为局部变量,python程序中的所有部分都可以访问全局变量,局部变量只能在本函数内可用,并且在函数中,变量的使用顺序是:局部变量 > 全局变量,也就是说,如果局部变量和全局变量都用a表示,那么调用a时,函数会优先调用局部变量。
全局变量实例:
我们按照文章开头讲解的代码结构顺序,展示一个简单的全局变量的实例
输出:
变量"gl_result"是在函数外部定义的,因此,他是一个全局变量。
在函数内部对全局变量赋值
如果我们在函数内部对全局变量进行赋值操作,那么全局变量的值会改变吗?
输出:
可以看出,函数内部的gl_result的值已经被我们修改成100了,但是函数外部的变量值仍为1,说明通过调用函数,我们没能修改到全局变量的值,只能修改函数内部的值,这又是为什么呢?
因为,如果在函数内部定义了一个与全局变量相同名称的变量,那么函数就会认为这是在创建一个与全局变量名称相同的变量,所以我们实际修改到的值只是函数中的局部变量的值,并非我们想要修改的全局变量。我们通过pycharm的提示也可以看到
有一个shadows name在函数外部,在PyCharm中,函数内部的变量,如果和函数被调用的外部的变量一样的话,就会被叫做shadows name,不容易被觉察到。
那么我们就不能在函数内部修改全局变量的值吗?当然不是,在python的函数中可以通过global关键字,调用并修改全局变量的值!
在函数内部修改全局变量的值
我们只需要在需要使用全局变量的前一行代码加上global + 全局变量,就可以随意修改全局变量的值啦!
可以看出,pycharm这次就没再提示shadows name了,因为我们从头到尾都是在使用同一个变量,即全局变量。所以我们一定要牢记,想要对全局变量进行修改时,在函数内部一定要加上global关键字,不然函数就会自动创建一个局部变量,使人产生误解。
Tips:
1、注意查看pycharm的warning,有时候可以帮助我们避免bug
2、在创建全局变量是按照gl_ + 全局变量 或者 global_ + 全局变量的命名方式,可以帮助我们更好地区分全局变量和局部变量

标签:函数,修改,Python,局部变量,python,全局变量,变量
From: https://blog.csdn.net/Python_shusu/article/details/142456107

相关文章

  • Python中Sha加密算法
    '''DES:Python3.x中的加密在python3的标准库中,已经移除了md5,而关于hash加密算法都放在hashlib这个标准库中,hashlib模块就包括了SHA1、SHA224、SHA256、SHA384、SHA512和MD5算法等。通常我们的加密,都是对二进制编码的格式进行加密的;而在Python中,使用的是Bytes......
  • python编码探测-优化版
    importosimportchardetfromtkinterimportfiledialogfromconcurrent.futuresimportThreadPoolExecutor#获取文件的编码defget_all_chardet(filename,max_bytes=1048576):#默认读取1MBtry:withopen(file=filename,mode='rb')asf3:#使用wit......
  • locust+python高并发压测总结
    locust+python全链路压测总结1.什么是接口?为系统提供数据服务的叫做接口(Interface)locust安装pipinstalllocust安装完成后:locust-h查看是否安装成功2.如何编写locust脚本?编写locust脚本主要分为以下几个步骤:导入Locust类定义用户行为定义任务运行脚本2.1导入Lo......
  • D15【python接口自动化学习】-python基础之内置数据类型
    day15字典的常见操作(上)学习日期:20240922学习目标:内置数据类型--24常见常新:字典的常见操作(上)学习笔记:字典的内置函数访问字典的内容#访问字典的所有元素mail_list={'tom':'[email protected]','jerry':'[email protected]','john':'[email protected]'}print(mail_li......
  • Python NumPy处理数组的基本用法代码示例
    NumPy是一个用于处理数组(向量和矩阵)以及进行数值运算的Python库。下面是一些简单的例子来展示如何使用NumP:示例1:创建数组importnumpyasnpa=np.array([1,2,3])#创建一个一维数组b=np.array([[1,2,3],[4,5,6]])#创建一个二维数组print(a)print(b)示......
  • python面试题
    python是什么?Python是一种开放原始码、直译式、可携式、面向对象的程序语言,具有模块、多线程、异常处理以及自动内存管理功能。广泛应用包括Web开发(如Django和Flask框架)、数据科学(如Pandas和NumPy库)、机器学习(如TensorFlow和PyTorch框架)、自动化脚本、科学计算等。算法是什么?......
  • Python用TOPSIS熵权法重构粮食系统及期刊指标权重多属性决策MCDM研究|附数据代码
    分析师:SikunChen在当今世界,粮食系统的稳定性至关重要。尽管现有的全球粮食系统在生产和分配方面表现出较高的效率,但仍存在大量人口遭受饥饿以及诸多粮食安全隐患。与此同时,在学术领域,准确评估情报学期刊的质量和影响力对于学术研究和信息传播意义重大。本研究旨在通过多种方法对......
  • 邮件发送基础:深入SMTP协议、配置邮件服务器及Python实现
    目录引言SMTP协议基础定义与功能工作原理特性与优势邮件服务器配置第三方邮件服务商配置自建邮件服务器配置使用Python发送邮件安装smtplib和email模块发送简单纯文本邮件发送HTML格式邮件发送带附件的邮件完整示例:发送带附件的HTML邮件注意事项总结引言......
  • Python 类型提示全解析:从入门到精通的必备技巧(如何让Python代码更清晰、错误更少)
    文章目录......
  • python语言MIDI钢琴简谱播放器软件代码QZQ
    importtkinterastkimportpygame.midiimporttime初始化pygame.midipygame.midi.init()获取MIDI输出设备midi_out=pygame.midi.Output(0)乐器名称映射instrument_names={0:“大钢琴(声学钢琴)”,1:“明亮的钢琴”,2:“电钢琴”,3:“酒吧钢琴”,4......