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自动格式化json文件的方法
Mar 11 Python
python中os模块详解
Oct 14 Python
特征脸(Eigenface)理论基础之PCA主成分分析法
Mar 13 Python
python在文本开头插入一行的实例
May 02 Python
Sanic框架流式传输操作示例
Jul 18 Python
TensorFlow用expand_dim()来增加维度的方法
Jul 26 Python
python抓取京东小米8手机配置信息
Nov 13 Python
浅谈python标准库--functools.partial
Mar 13 Python
python把ipynb文件转换成pdf文件过程详解
Jul 09 Python
Python大数据之网络爬虫的post请求、get请求区别实例分析
Nov 16 Python
pycharm修改file type方式
Nov 19 Python
opencv-python的RGB与BGR互转方式
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 创建文件(文件夹)以及目录操作代码
2010/03/04 PHP
常见的PHP五种设计模式小结
2011/03/23 PHP
MySQL时间字段究竟使用INT还是DateTime的说明
2012/02/27 PHP
PHP实现支持GET,POST,Multipart/form-data的HTTP请求类
2014/09/24 PHP
twig模板获取全局变量的方法
2016/02/05 PHP
PHP三种方式实现链式操作详解
2017/01/21 PHP
PHP实现动态压缩js与css文件的方法
2018/05/02 PHP
Yii框架的布局文件实例分析
2019/09/04 PHP
jquery 表单下所有元素的隐藏
2009/07/25 Javascript
jquery post方式传递多个参数值后台以数组的方式进行接收
2013/01/11 Javascript
IE8的JavaScript点击事件(onclick)不兼容的解决方法
2013/11/22 Javascript
JQuery 两种方法解决刚创建的元素遍历不到的问题
2016/04/13 Javascript
js绑定事件和解绑事件
2017/04/27 Javascript
vue实现登录页面的验证码以及验证过程解析(面向新手)
2019/08/02 Javascript
jQuery 查找元素操作实例小结
2019/10/02 jQuery
Vue组件通信入门之Provide和Inject机制
2019/12/29 Javascript
详解Webpack抽离第三方类库以及common解决方案
2020/03/30 Javascript
[03:02]2014DOTA2西雅图邀请赛 让队员自己告诉你DK NAVI备战情况
2014/07/08 DOTA
[03:40]2014DOTA2国际邀请赛 B神专访:躲箭真的很难
2014/07/13 DOTA
[42:52]Optic vs Serenity 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
Python 检查数组元素是否存在类似PHP isset()方法
2014/10/14 Python
详解常用查找数据结构及算法(Python实现)
2016/12/09 Python
python爬虫框架talonspider简单介绍
2017/06/09 Python
有趣的python小程序分享
2017/12/05 Python
Python实现iOS自动化打包详解步骤
2018/10/03 Python
Python实现将蓝底照片转化为白底照片功能完整实例
2019/12/13 Python
澳大利亚家具和家居用品在线:BROSA
2017/11/02 全球购物
荷兰家电购物网站:Expert.nl
2020/01/18 全球购物
Woods官网:加拿大最古老、最受尊敬的户外品牌之一
2020/09/12 全球购物
医院标语大全
2014/06/23 职场文书
小学教育见习报告
2014/10/31 职场文书
农业项目合作意向书
2015/05/08 职场文书
员工考勤管理制度
2015/08/06 职场文书
2016领导干部廉洁自律心得体会
2016/01/13 职场文书
C3 线性化算法与 MRO之Python中的多继承
2021/10/05 Python
Python实现位图分割的效果
2021/11/20 Python