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实现字符串和日期相互转换的方法
May 13 Python
Python使用PyCrypto实现AES加密功能示例
May 22 Python
NetworkX之Prim算法(实例讲解)
Dec 22 Python
unittest+coverage单元测试代码覆盖操作实例详解
Apr 04 Python
python实现requests发送/上传多个文件的示例
Jun 04 Python
python版本单链表实现代码
Sep 28 Python
selenium使用chrome浏览器测试(附chromedriver与chrome的对应关系表)
Nov 29 Python
什么是python的id函数
Jun 11 Python
python 日志模块logging的使用场景及示例
Jan 04 Python
selenium携带cookies模拟登陆CSDN的实现
Jan 19 Python
python3使用diagrams绘制架构图的步骤
Apr 08 Python
Python import模块的缓存问题解决方案
Jun 02 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自定义函数实现代码
2011/12/30 PHP
php中通过curl smtp发送邮件
2012/06/05 PHP
php生成html文件方法总结
2014/12/01 PHP
javascript Split方法,indexOf方法、lastIndexOf 方法和substring 方法
2009/03/21 Javascript
Jquery Autocomplete 结合asp.net使用要点
2010/10/29 Javascript
javascript parseInt() 函数的进制转换注意细节
2013/01/08 Javascript
javascript history对象(历史记录)使用方法(实现浏览器前进后退)
2014/01/07 Javascript
js实现模拟计算器退格键删除文字效果的方法
2015/05/07 Javascript
jquery 动态增加删除行的简单实例(推荐)
2016/10/12 Javascript
NodeJs模拟登陆正方教务
2017/04/28 NodeJs
微信小程序实现的动态设置导航栏标题功能示例
2019/01/31 Javascript
Bootstrap 时间日历插件bootstrap-datetimepicker配置与应用小结
2019/05/28 Javascript
ant-design-vue 时间选择器赋值默认时间的操作
2020/10/27 Javascript
[04:26]DOTA2上海特锦赛小组赛第二日 TOP10精彩集锦
2016/02/27 DOTA
在Python的Django框架中simple-todo工具的简单使用
2015/05/30 Python
python 不同方式读取文件速度不同的实例
2018/11/09 Python
Python设置matplotlib.plot的坐标轴刻度间隔以及刻度范围
2019/06/25 Python
python SQLAlchemy 中的Engine详解
2019/07/04 Python
Python 多线程其他属性以及继承Thread类详解
2019/08/28 Python
opencv3/C++ 平面对象识别&透视变换方式
2019/12/11 Python
节日快乐! Python画一棵圣诞树送给你
2019/12/24 Python
Python Tornado之跨域请求与Options请求方式
2020/03/28 Python
python实现三壶谜题的示例详解
2020/11/02 Python
css3实现超立体3D图片侧翻倾斜效果
2014/04/16 HTML / CSS
HTML5样式控制示例代码
2013/11/27 HTML / CSS
Aveda美国官网:天然护发产品、洗发水、护发素和沙龙
2016/12/09 全球购物
Solid & Striped官网:美国泳装品牌
2019/06/19 全球购物
internal修饰符起什么作用
2013/12/16 面试题
服务承诺书范文
2014/05/19 职场文书
岗位安全生产责任书
2014/07/28 职场文书
村级个人对照检查材料
2014/08/22 职场文书
二年级上册数学教学计划
2015/01/20 职场文书
河童之夏观后感
2015/06/11 职场文书
在校生证明
2015/06/17 职场文书
导游词之青岛太清宫
2019/12/13 职场文书
用Python提取PDF表格的方法
2021/04/11 Python