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编写分析Python程序性能的工具的教程
Apr 01 Python
Python中的自省(反射)详解
Jun 02 Python
详谈python read readline readlines的区别
Sep 22 Python
python pandas 时间日期的处理实现
Jul 30 Python
Python利用逻辑回归分类实现模板
Feb 15 Python
python中resample函数实现重采样和降采样代码
Feb 25 Python
在ipython notebook中使用argparse方式
Apr 20 Python
Python使用requests模块爬取百度翻译
Aug 25 Python
教你如何用python操作摄像头以及对视频流的处理
Oct 12 Python
Python classmethod装饰器原理及用法解析
Oct 17 Python
Python爬虫之Selenium鼠标事件的实现
Dec 04 Python
详解OpenCV获取高动态范围(HDR)成像
Apr 29 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中mb_convert_encoding与iconv函数的深入解析
2013/06/21 PHP
PHP中配置IIS7实现基本身份验证的方法
2015/09/24 PHP
Codeigniter控制器controller继承问题实例分析
2016/01/19 PHP
PHP MVC框架路由学习笔记
2016/03/02 PHP
PHP微信开发之模板消息回复
2016/06/24 PHP
Thinkphp和Bootstrap结合打造个性的分页样式(推荐)
2016/08/01 PHP
php异步:在php中使用fsockopen curl实现类似异步处理的功能方法
2016/12/10 PHP
WordPress 插件——CoolCode使用方法与下载
2007/07/02 Javascript
Mootools 1.2教程 定时器和哈希简介
2009/09/15 Javascript
为javascript添加String.Format方法
2020/08/11 Javascript
JavaScript与DropDownList 区别分析
2010/01/01 Javascript
预加载css或javascript的js代码
2010/04/23 Javascript
20个最新的jQuery插件
2012/01/13 Javascript
node.js中的emitter.emit方法使用说明
2014/12/10 Javascript
jQuery对指定元素中指定字符串进行替换的方法
2015/03/17 Javascript
jquery validate.js表单验证入门实例(附源码)
2015/11/10 Javascript
Bootstrap3制作自己的导航栏
2016/05/12 Javascript
基于Angular.js实现的触摸滑动动画实例代码
2017/02/19 Javascript
flag和jq on 的绑定多个对象和方法(必看)
2017/02/27 Javascript
浅析Javascript中双等号(==)隐性转换机制
2017/10/27 Javascript
如何实现双向绑定mvvm的原理实现
2019/05/28 Javascript
react 原生实现头像滚动播放的示例
2020/04/21 Javascript
vue-quill-editor的使用及个性化定制操作
2020/08/04 Javascript
编写自定义的Django模板加载器的简单示例
2015/07/21 Python
Unicode和Python的中文处理
2017/03/19 Python
Pandas探索之高性能函数eval和query解析
2017/10/28 Python
使用python模拟命令行终端的示例
2019/08/13 Python
Pytorch中的variable, tensor与numpy相互转化的方法
2019/10/10 Python
韩国流行时尚女装网站:Dintchina(中文)
2018/07/19 全球购物
英国和国际包裹递送:ParcelCompare
2019/08/26 全球购物
建筑设计师岗位职责
2013/11/18 职场文书
小学生开学第一课活动方案
2014/03/27 职场文书
学雷锋活动倡议书
2014/08/30 职场文书
大学生职业生涯十年规划书范文
2014/09/17 职场文书
市场督导岗位职责
2015/04/10 职场文书
windows11怎么查看wifi密码? win11查看wifi密码的技巧
2021/11/21 数码科技