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 时间操作例子和时间格式化参数小结
Apr 24 Python
python计算方程式根的方法
May 07 Python
Python Sqlite3以字典形式返回查询结果的实现方法
Oct 03 Python
python决策树之CART分类回归树详解
Dec 20 Python
Python设计模式之观察者模式简单示例
Jan 10 Python
为什么str(float)在Python 3中比Python 2返回更多的数字
Oct 16 Python
python中将zip压缩包转为gz.tar的方法
Oct 18 Python
python 列表输出重复值以及对应的角标方法
Jun 11 Python
Python django框架输入汉字,数字,字符生成二维码实现详解
Sep 24 Python
python-视频分帧&多帧合成视频实例
Dec 10 Python
python爬虫开发之selenium模块详细使用方法与实例全解
Mar 09 Python
举例讲解Python装饰器
Dec 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数组函数序列之next() - 移动数组内部指针到下一个元素的位置,并返回该元素值
2011/10/31 PHP
php使用imagick模块实现图片缩放、裁剪、压缩示例
2014/04/17 PHP
php+jQuery.uploadify实现文件上传教程
2014/12/26 PHP
php比较两个字符串长度的方法
2015/07/13 PHP
js 获取子节点函数 (兼容FF与IE)
2010/04/18 Javascript
JS正则中的RegExp对象对象
2012/11/07 Javascript
js闭包的用途详解
2014/11/09 Javascript
关于javascript模块加载技术的一些思考
2014/11/28 Javascript
全面解析标签页的切换方式
2016/08/21 Javascript
Angular实现点击按钮控制隐藏和显示功能示例
2017/12/29 Javascript
基于Bootstrap和JQuery实现动态打开和关闭tab页的实例代码
2019/06/10 jQuery
JS获取当前时间的年月日时分秒及时间的格式化的方法
2019/12/18 Javascript
用C++封装MySQL的API的教程
2015/05/06 Python
python 划分数据集为训练集和测试集的方法
2018/12/11 Python
python Tensor和Array对比分析
2020/01/08 Python
Python 随机生成测试数据的模块:faker基本使用方法详解
2020/04/09 Python
Django实现前台上传并显示图片功能
2020/05/29 Python
django使用graphql的实例
2020/09/02 Python
如何利用python生成MD5并去重
2020/12/07 Python
伦敦最著名的老字号百货公司:Selfridges(塞尔福里奇百货)
2016/07/25 全球购物
全球速卖通:AliExpress(国际版淘宝)
2017/09/20 全球购物
HEMA英国:荷兰原创设计
2018/08/28 全球购物
Hush Puppies澳大利亚官网:舒适的男女休闲和正装鞋
2019/08/24 全球购物
PHP如何去执行一个SQL语句
2016/03/05 面试题
27个经典Linux面试题及答案,你知道几个?
2014/03/11 面试题
献爱心标语
2014/06/21 职场文书
中国梦演讲稿5分钟
2014/08/19 职场文书
项目合作协议书
2014/09/23 职场文书
简易版租房协议书范本
2014/10/13 职场文书
画展邀请函
2015/01/31 职场文书
公司放假通知范文
2015/04/14 职场文书
入党宣誓仪式主持词
2015/06/29 职场文书
浅谈mysql增加索引不生效的几种情况
2021/06/23 MySQL
MySQL表类型 存储引擎 的选择
2021/11/11 MySQL
基于CSS制作创意端午节专属加载特效
2022/06/01 HTML / CSS
JavaScript parseInt0.0000005打印5原理解析
2022/07/23 Javascript