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实现KNN邻近算法
Jan 28 Python
python实现闹钟定时播放音乐功能
Jan 25 Python
使用python根据端口号关闭进程的方法
Nov 06 Python
浅谈python图片处理Image和skimage的区别
Aug 04 Python
Django框架反向解析操作详解
Nov 28 Python
tensorflow中tf.slice和tf.gather切片函数的使用
Jan 19 Python
Python3.9又更新了:dict内置新功能
Feb 28 Python
探秘TensorFlow 和 NumPy 的 Broadcasting 机制
Mar 13 Python
基于python实现计算两组数据P值
Jul 10 Python
Python collections.deque双边队列原理详解
Oct 05 Python
python利用opencv保存、播放视频
Nov 02 Python
python小型的音频操作库mp3Play
Apr 24 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
php中session定期自动清理的方法
2015/11/12 PHP
PHP获取中国时间(上海时区时间)及美国时间的方法
2017/02/23 PHP
php mysql PDO 查询操作的实例详解
2017/09/23 PHP
php实现socket推送技术的示例
2017/12/20 PHP
javascript 中对象的继承〔转贴〕
2007/01/22 Javascript
js关闭子窗体刷新父窗体实现方法
2012/12/04 Javascript
可自己添加html的伪弹出框实现代码
2013/09/08 Javascript
Jquery 实现弹出层插件
2015/01/28 Javascript
简述Jquery与DOM对象
2015/07/10 Javascript
浅谈JavaScript 函数参数传递到底是值传递还是引用传递
2016/08/23 Javascript
Three.js的使用及绘制基础3D图形详解
2017/04/27 Javascript
vue实现文件上传功能
2018/08/13 Javascript
微信小程序动态添加view组件的实例代码
2019/05/23 Javascript
js实现超级玛丽小游戏
2020/03/18 Javascript
vue+animation实现翻页动画
2020/06/29 Javascript
详解element-ui 表单校验 Rules 配置 常用黑科技
2020/07/11 Javascript
js实现页面导航层级指示效果
2020/08/25 Javascript
基于JQuery和DWR实现异步数据传递
2020/10/16 jQuery
[03:36]2015国际邀请赛第二日现场精彩集锦
2015/08/06 DOTA
python实现获取客户机上指定文件并传输到服务器的方法
2015/03/16 Python
Django框架中方法的访问和查找
2015/07/15 Python
python实现对文件中图片生成带标签的txt文件方法
2018/04/27 Python
mac PyCharm添加Python解释器及添加package路径的方法
2018/10/29 Python
使用python获取(宜宾市地震信息)地震信息
2019/06/20 Python
python之mock模块基本使用方法详解
2019/06/27 Python
django foreignkey(外键)的实现
2019/07/29 Python
css3圆角样式分享自定义按钮样式
2013/12/27 HTML / CSS
UNIX命令速查表
2012/03/10 面试题
给学校的建议书
2014/03/12 职场文书
园林专业毕业生自荐信
2014/07/04 职场文书
停电放假通知
2015/04/14 职场文书
革命电影观后感
2015/06/18 职场文书
Pytorch中的数据集划分&正则化方法
2021/05/27 Python
雄兵连:第三季先行图公开,天使恶魔联合,银河之力的新力量
2021/06/11 国漫
Java后台生成图片的完整步骤
2021/08/04 Java/Android
CSS浮动引起的高度塌陷问题
2022/08/05 HTML / CSS