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 中文字符串的处理实现代码
Oct 25 Python
Python3.5.3下配置opencv3.2.0的操作方法
Apr 02 Python
PyQt5每天必学之滑块控件QSlider
Apr 20 Python
一个可以套路别人的python小程序实例代码
Apr 09 Python
python正则-re的用法详解
Jul 28 Python
Django 响应数据response的返回源码详解
Aug 06 Python
django ajax发送post请求的两种方法
Jan 05 Python
利用Python实现某OA系统的自动定位功能
May 27 Python
基于Python的接口自动化unittest测试框架和ddt数据驱动详解
Jan 27 Python
浅谈matplotlib默认字体设置探索
Feb 03 Python
python使用matplotlib绘制图片时x轴的刻度处理
Aug 30 Python
Django数据库(SQlite)基本入门使用教程
Jul 07 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使之能同时支持GIF和JPEG
2006/10/09 PHP
PHP获取文件夹大小函数用法实例
2015/07/01 PHP
PHP MSSQL 分页实例
2016/04/13 PHP
详解PHP的抽象类和抽象方法以及接口总结
2019/03/15 PHP
php封装的page分页类完整实例代码
2020/02/01 PHP
搭建PhpStorm+PhpStudy开发环境的超详细教程
2020/09/17 PHP
个人总结的一些关于String、Function、Array的属性和用法
2007/01/10 Javascript
JQuery 简便实现页面元素数据验证功能
2007/03/24 Javascript
jQuery源码分析-02正则表达式 RegExp 常用正则表达式
2011/11/14 Javascript
jQuery源码中的chunker 正则过滤符分析
2012/07/31 Javascript
JavaScript加强之自定义callback示例
2013/09/21 Javascript
Node.js中对通用模块的封装方法
2014/06/06 Javascript
对layui中表单元素的使用详解
2018/08/15 Javascript
vue中使用gojs/jointjs的示例代码
2018/08/24 Javascript
小程序实现日历左右滑动效果
2019/10/21 Javascript
pyqt4教程之实现半透明的天气预报界面示例
2014/03/02 Python
Python开发的单词频率统计工具wordsworth使用方法
2014/06/25 Python
python使用os.listdir和os.walk获得文件的路径的方法
2017/12/16 Python
Python基于OpenCV实现视频的人脸检测
2018/01/23 Python
浅谈tensorflow1.0 池化层(pooling)和全连接层(dense)
2018/04/27 Python
python 列表递归求和、计数、求最大元素的实例
2018/11/28 Python
python dlib人脸识别代码实例
2019/04/04 Python
TFRecord格式存储数据与队列读取实例
2020/01/21 Python
Python基于QQ邮箱实现SSL发送
2020/04/26 Python
3种适用于Python的疯狂秘密武器及原因解析
2020/04/29 Python
利用python+request通过接口实现人员通行记录上传功能
2021/01/13 Python
CSS3 重置iphone浏览器按钮input,select等表单元素的默认样式
2014/10/11 HTML / CSS
HTML5 Canvas+JS控制电脑或手机上的摄像头实例
2014/05/03 HTML / CSS
选购国际女性时装设计师品牌:IFCHIC(支持中文)
2018/04/12 全球购物
数学教师求职信范文
2015/03/20 职场文书
社区扶贫帮困工作总结
2015/05/20 职场文书
英语读书笔记
2015/07/02 职场文书
主婚人致辞精选
2015/07/28 职场文书
CSS 制作波浪效果的思路
2021/05/18 HTML / CSS
win10频率超出范围怎么办?win10老显示超出工作频率范围的解决方法
2022/07/07 数码科技
HttpClient实现表单提交上传文件
2022/08/14 Java/Android