在本文章中,我们来讨论一下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中的全局变量相关推荐

  1. 在python中、关于全局变量和局部变量_在Python中,关于全局变量和局部变量,以下选项中描述不正确的是...

    [单选题]Python文本处理方向的第三方库是 [单选题]哪个选项的描述是正确的? [单选题]以下选项中属于Python语言中合法的二进制整数是 [单选题]以下说法错误的是: [单选题]下面属于B2B ...

  2. python初始化方法对应的变量是全局变量嘛_在Python中初始化全局变量的正确方法...

    我有一个初始化一些全局变量的 Python模块;这样的事情: #!/usr/bin/env python import re """My awesome python l ...

  3. python中的全局变量与局部变量

    全局变量与局部变量两者的本质区别就是在于作用域,全局变量即在整个程序中,任何地方都可以访问.而局部变量,试着在函数内部声明的变量,当函数运行结束时,局部变量就会被内存释放. 例子: 1 name='z ...

  4. Python中的全局变量与局部变量2

    from math import * import pandas as pd import numpy as np import matplotlib.pyplot as plt########### ...

  5. python中的全局变量和局部变量

    加上  global : 表示声明要修改全局变量的内存地址.

  6. Python 中的全局变量

    def fib(n):global memo, cntcnt += 1if n not in memo:memo[n] = fib(n-1) + fib(n-2)return memo[n]if __ ...

  7. [转载] python中全局变量和局部变量解析

    参考链接: Python中的全局变量和局部变量 python函数中可以访问全局变量但是不能给全局变量赋值,除非进行显式声明global a 比如定义了全局变量 a  在函数my_fun()中可以直接访 ...

  8. python获取程序文件中的全局变量和局部变量的函数

    目录 global()和locals()函数 (一)演示示例 (二)程序执行结果 (三)简单使用 (四)参考资料 global()和locals()函数 使用global()可以获取Python中的全 ...

  9. python中全局变量的定义及调用_python中定义全局变量

    python中怎么定义全局变量 python中在哪些情况下必须使用global来声明全局变量 python class里面的全局变量问题 python中的本地变量(local variable)和全局 ...

最新文章

  1. 连接centos7桌面方法
  2. SpringMVC核心流程图
  3. scp连接linux网络错误,winscp连接linux(centos7)时提示主机超过15秒无通信,继续等待的解决方法...
  4. matlab2017调用vgg19,从VGG19的任意中间层中抽取特征
  5. coff2omf matlab,OMF和COFF格式有什么区别?
  6. E哥的Git教程(一)
  7. 怎么查看网站数据库服务器ip地址,怎么查看网站数据库服务器ip地址吗
  8. 第六章 图论 AcWing 1635. 最大集团
  9. Python亲戚计算器
  10. 北京数字认证bjca证书垃圾,报错:错误代码 EC999
  11. python刷题 NOI题库 python题解 洛谷、牛客网、AcWing 刷题等
  12. python人工智能课程设计_中小学课程设计:以计算思维培养为核心的人工智能课程设计与实践...
  13. 搜索新风口与营销新变量
  14. 开源阅读书源_超强小说阅读软件
  15. 第七章:混合策略与混合策略纳什均衡
  16. Ubuntu18.04 显卡GF-940MX安装NVIDIA-390.77
  17. 虚拟机安装WIN11,缺少计算机所需的介质驱动程序
  18. 机器学习之必备知识篇
  19. 自动进行统计分析的工具
  20. 使用js发送post请求

热门文章

  1. 10-248 7-1 将下述事实存入数据库:生产厂商C制造的型号为1100的PC机,速度240,内存32,硬盘2.5G,售价2499美元。
  2. 关闭linux退格键和vi发出的嘟嘟声
  3. 关于前端如何用原生实现刻度尺
  4. $.post html5,$.post(url,[data],[fn],[type])_jQuery之家-自由分享jQuery、html5、css3的插件库...
  5. html静态网站基于汉服文化网站网页设计与实现共计12个页面
  6. Fedora 23 配置
  7. 超实用的Java面试宝典
  8. 网游找call通杀方法之另辟蹊径
  9. 用Java写春联:一键自动发送微信祝福给喜欢的人【撩】
  10. python学习——相关软件汇总