Python中的全局变量如何理解


Posted in Python onJune 04, 2020

Python是一种面向对象的开发语言,在函数中使用全局变量,一般应作全局变量说明,只有在函数内经过说明的全局变量才能使用。

首先应该说明的是需要尽量避免使用Python全局变量。不同的模块都可以自由的访问全局变量,可能会导致全局变量的不可预知性。对全局变量,如果程序员甲修改了_a的值,这时可能导致程序中的错误。这种错误是很难发现和更正的。

全局变量降低了函数或模块之间的通用性,不同的函数或模块都要依赖于全局变量。同样,全局变量降低了代码的可读性,阅读者可能并不知道调用的某个变量是全局变量。 但是某些时候,Python全局变量能够解决局部变量所难以解决的问题。事物要一分为二。

python里面全局变量有两种灵活的用法:

gl.py:

gl_1 = 'hello'
gl_2 = 'world'

在其它模块中使用

a.py:

import gl 
def hello_world() 
 print gl.gl_1, gl.gl_2

b.py:

import gl 
def fun1() 
 gl.gl_1 = 'Hello'
 gl.gl_2 = 'World'
def modifyConstant() : 
  global CONSTANT 
  print CONSTANT 
  CONSTANT += 1
  return
if __name__ == '__main__' : 
  modifyConstant() 
  print CONSTANT

1 声明法

在文件开头声明Python全局变量variable, 在具体函数中使用该变量时,需要事先声明 global variable,否则系统将该变量视为局部变量。 CONSTANT = 0 (将全局变量大写便于识别)

2模块法

gl.py:

gl_1 = 'hello'
gl_2 = 'world'

在其它模块中使用

a.py:

import gl 
def hello_world() 
 print gl.gl_1, gl.gl_2

b.py:

import gl 
def fun1() 
 gl.gl_1 = 'Hello'
 gl.gl_2 = 'World'
def modifyConstant() : 
  global CONSTANT 
  print CONSTANT 
  CONSTANT += 1
  return
if __name__ == '__main__' : 
  modifyConstant() 
  print CONSTANT

内容扩展:

什么是局部变量

通俗定义:函数内部定义的变量就叫局部变量。

话不多说,代码如下:

def test1():
 a = 300 # 定义一个局部变量a,并初始化300
 print("--test1--修改前:a=%s" % a)
 a = 200 # 给变量a重新赋值200
 print("--test1--修改后:a=%s" % a)
def test2():
 a = 400 # 定义另一个局部变量a,并初始化400
 print("--test2--修改后:a=%s" % a)
# 分别调用函数test1,test2
test1()
test2()

输出:

--test1--修改前:a=300
--test1--修改后:a=200
--test2--修改后:a=400

结论:

  • 局部变量就是在函数内部定义的变量。
  • 不同的函数内部可以定义名字相同的变量,但它们不会产生影响。
  • 局部变量的作用,为了临时保存数据需要在需要在函数中定义变量来进行存储。

到此这篇关于Python中的全局变量如何理解的文章就介绍到这了,更多相关Python中全局变量详解内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
浅谈Python中函数的参数传递
Jun 21 Python
对numpy中数组元素的统一赋值实例
Apr 04 Python
读取json格式为DataFrame(可转为.csv)的实例讲解
Jun 05 Python
win7+Python3.5下scrapy的安装方法
Jul 31 Python
python判断数字是否是超级素数幂
Sep 27 Python
django Serializer序列化使用方法详解
Oct 16 Python
Python使用pyshp库读取shapefile信息的方法
Dec 29 Python
详解pandas安装若干异常及解决方案总结
Jan 10 Python
python pandas 时间日期的处理实现
Jul 30 Python
Python生成器实现简单"生产者消费者"模型代码实例
Mar 27 Python
Python configparser模块操作代码实例
Jun 08 Python
python内置模块之上下文管理contextlib
Jun 14 Python
使用OpenCV获取图片连通域数量,并用不同颜色标记函
Jun 04 #Python
Python urllib2运行过程原理解析
Jun 04 #Python
Python如何生成xml文件
Jun 04 #Python
基于python代码批量处理图片resize
Jun 04 #Python
Python脚本如何在bilibili中查找弹幕发送者
Jun 04 #Python
Python爬虫谷歌Chrome F12抓包过程原理解析
Jun 04 #Python
python实现按键精灵找色点击功能教程,使用pywin32和Pillow库
Jun 04 #Python
You might like
javascript之解决IE下不渲染的bug
2007/06/29 Javascript
firefox插件Firebug的使用教程
2010/01/02 Javascript
Jquery 获取指定标签的对象及属性的设置与移除
2014/05/29 Javascript
一个JavaScript用逗号分割字符串实例
2014/09/22 Javascript
JS中字符串trim()使用示例
2015/05/26 Javascript
javascript图片预加载实例分析
2015/07/16 Javascript
JavaScript制作淘宝星级评分效果的思路
2020/06/23 Javascript
jQuery+PHP+MySQL实现无限级联下拉框效果
2016/02/19 Javascript
JavaScript中匿名函数的用法及优缺点详解
2016/06/01 Javascript
JS双击变input框批量修改内容
2016/12/12 Javascript
angular仿支付宝密码框输入效果
2017/03/25 Javascript
ES6 Promise对象概念与用法分析
2017/04/01 Javascript
完美实现js拖拽效果 return false用法详解
2017/07/28 Javascript
推荐15个最好用的JavaScript代码压缩工具
2019/02/13 Javascript
Vue 基于 vuedraggable 实现选中、拖拽、排序效果
2020/05/18 Javascript
Vuex的热更替如何实现
2020/06/05 Javascript
用python制作游戏外挂
2018/01/04 Python
通过Python 接口使用OpenCV的方法
2018/04/02 Python
python使用ddt过程中遇到的问题及解决方案【推荐】
2018/10/29 Python
python隐藏终端执行cmd命令的方法
2019/06/24 Python
基于Django ORM、一对一、一对多、多对多的全面讲解
2019/07/26 Python
Python 实现大整数乘法算法的示例代码
2019/09/17 Python
简单了解python元组tuple相关原理
2019/12/02 Python
Python的形参和实参使用方式
2019/12/24 Python
pytorch-RNN进行回归曲线预测方式
2020/01/14 Python
不到20行实现Python代码即可制作精美证件照
2020/04/24 Python
Python字符串查找基本操作代码案例
2020/10/27 Python
python中slice参数过长的处理方法及实例
2020/12/15 Python
基于 Python 实践感知器分类算法
2021/01/07 Python
CSS3使用多列制作瀑布流
2016/05/10 HTML / CSS
html标签之Object和EMBED标签详解
2013/07/04 HTML / CSS
HTML5 SEO优化的一些建议
2020/08/27 HTML / CSS
党员干部反四风民主生活会对照检查材料思想汇报
2014/10/12 职场文书
村官2015年度工作总结
2015/10/14 职场文书
css背景和边框标签实例详解
2021/05/21 HTML / CSS
Apache POI的基本使用详解
2021/11/07 Servers