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列表操作实例
Jan 14 Python
详解Python中的文本处理
Apr 11 Python
Python深度优先算法生成迷宫
Jan 22 Python
Python多进程并发与多线程并发编程实例总结
Feb 08 Python
Python使用matplotlib绘图无法显示中文问题的解决方法
Mar 14 Python
Python 数据处理库 pandas 入门教程基本操作
Apr 19 Python
ActiveMQ:使用Python访问ActiveMQ的方法
Jan 30 Python
python调用pyaudio使用麦克风录制wav声音文件的教程
Jun 26 Python
Python 生成VOC格式的标签实例
Mar 10 Python
Python定义函数实现累计求和操作
May 03 Python
Django model重写save方法及update踩坑详解
Jul 27 Python
python的链表基础知识点
Sep 13 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调用google接口生成二维码示例
2014/04/28 PHP
LAMP环境使用Composer安装Laravel的方法
2017/03/25 PHP
PHP将身份证正反面两张照片合成一张图片的代码
2017/04/08 PHP
yii2 在控制器中验证请求参数的使用方法
2019/06/19 PHP
PHP检查文件是否存在,不存在自动创建及读取文件内容操作示例
2020/01/23 PHP
让您的菜单不离网站
2006/10/03 Javascript
NiftyCube——轻松实现圆角边框
2007/02/20 Javascript
jquery中对表单的基本操作代码
2010/07/29 Javascript
jquery异步循环获取功能实现代码
2010/09/19 Javascript
jquery实现marquee效果(文字或者图片的水平垂直滚动)
2013/01/07 Javascript
30分钟就入门的正则表达式基础教程
2013/02/25 Javascript
Jquery 切换不同图片示例代码
2013/12/05 Javascript
js实现图片旋转的三种方法
2014/04/10 Javascript
js实现简洁大方的二级下拉菜单效果代码
2015/09/01 Javascript
JS onkeypress兼容性写法详解
2016/04/27 Javascript
JavaScript知识点总结(十六)之Javascript闭包(Closure)代码详解
2016/05/31 Javascript
使用Web Uploader实现多文件上传
2016/06/08 Javascript
bootstrap fileinput完整实例分享
2016/11/08 Javascript
Node.js操作redis实现添加查询功能
2017/05/25 Javascript
jQuery实现表单动态加减、ajax表单提交功能
2018/06/08 jQuery
浅谈React碰到v-if
2018/11/04 Javascript
javascript实现简易计算器功能
2020/09/23 Javascript
Python中关键字is与==的区别简述
2014/07/31 Python
在MAC上搭建python数据分析开发环境
2016/01/26 Python
Python按行读取文件的实现方法【小文件和大文件读取】
2016/09/19 Python
Django内容增加富文本功能的实例
2017/10/17 Python
Python二叉树的定义及常用遍历算法分析
2017/11/24 Python
python+splinter自动刷新抢票功能
2018/09/25 Python
利用PyCharm Profile分析异步爬虫效率详解
2019/05/08 Python
Python将主机名转换为IP地址的方法
2019/08/14 Python
CSS3实现的渐变幻灯片效果
2020/12/07 HTML / CSS
在HTML5 Canvas中放入图片和保存为图片的方法
2014/05/03 HTML / CSS
公司面试感谢信
2014/02/01 职场文书
五四演讲稿范文
2014/09/03 职场文书
交通事故调解协议书
2015/05/20 职场文书
详解在OpenCV中如何使用图像像素
2022/03/03 Python