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创建xml的方法
Mar 10 Python
Python中pygame安装方法图文详解
Nov 11 Python
Python中文件I/O高效操作处理的技巧分享
Feb 04 Python
Python3实现发送QQ邮件功能(文本)
Dec 15 Python
解决python2 绘图title,xlabel,ylabel出现中文乱码的问题
Jan 29 Python
Python 读取串口数据,动态绘图的示例
Jul 02 Python
Python+opencv 实现图片文字的分割的方法示例
Jul 04 Python
wxPython窗体拆分布局基础组件
Nov 19 Python
TensorBoard 计算图的可视化实现
Feb 15 Python
Django xadmin安装及使用详解
Oct 26 Python
Python爬虫爬取全球疫情数据并存储到mysql数据库的步骤
Mar 29 Python
Python趣味挑战之给幼儿园弟弟生成1000道算术题
May 28 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多线程抓取网页实现代码
2010/07/22 PHP
浅析Dos下运行php.exe,出现没有找到php_mbstring.dll 错误的解决方法
2013/06/29 PHP
PHP四大安全策略
2014/03/12 PHP
php json转换成数组形式代码分享
2014/11/10 PHP
PHP中的Trait 特性及作用
2016/04/03 PHP
PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
2019/12/20 PHP
硬盘浏览程序,保存成网页格式便可使用
2006/12/03 Javascript
一个JS小玩意 几个属性相加不能超过一个特定值.
2009/09/29 Javascript
js取消单选按钮选中并判断对象是否为空
2013/11/14 Javascript
基于javascript、ajax、memcache和PHP实现的简易在线聊天室
2015/02/03 Javascript
jquery实现输入框实时输入触发事件代码
2016/12/21 Javascript
React中ES5与ES6写法的区别总结
2017/04/21 Javascript
easyui-datagrid开发实践(总结)
2017/08/02 Javascript
JS使用遮罩实现点击某区域以外时弹窗的弹出与关闭功能示例
2018/07/31 Javascript
vee-validate vue 2.0自定义表单验证的实例
2018/08/28 Javascript
vue.js中ref和$refs的使用及示例讲解
2019/08/14 Javascript
学习 Vue.js 遇到的那些坑
2021/02/02 Vue.js
pyqt4教程之实现windows窗口小示例分享
2014/03/07 Python
Python应用03 使用PyQT制作视频播放器实例
2016/12/07 Python
HTML中使用python屏蔽一些基本功能的方法
2017/07/07 Python
Python实现发送QQ邮件的封装
2017/07/14 Python
Python中执行存储过程及获取存储过程返回值的方法
2017/10/07 Python
pandas 空的dataframe 插入列名的示例
2018/10/30 Python
利用Pyhton中的requests包进行网页访问测试的方法
2018/12/26 Python
Python时间序列处理之ARIMA模型的使用讲解
2019/04/02 Python
Python动态参数/命名空间/函数嵌套/global和nonlocal
2019/05/29 Python
Python3.7安装keras和TensorFlow的教程图解
2020/06/18 Python
python中format函数如何使用
2020/06/22 Python
localStorage 设置过期时间的方法实现
2018/12/21 HTML / CSS
台湾百利市购物中心:e-Payless
2017/08/16 全球购物
伦敦剧院及景点门票:Encore Tickets
2018/07/01 全球购物
Linden Leaves官网:新西兰纯净护肤品
2020/12/20 全球购物
幼教毕业生自我鉴定
2014/01/12 职场文书
迁户口计划生育证明
2014/10/19 职场文书
红高粱观后感
2015/06/10 职场文书
Vue中Object.assign清空数据报错的解决方案
2022/03/03 Vue.js