Python global全局变量函数详解


Posted in Python onSeptember 18, 2018

global语句的作用

在编写程序的时候,如果想为一个在函数外的变量重新赋值,并且这个变量会作用于许多函数中时,就需要告诉python这个变量的作用域是全局变量。此时用global语句就可以变成这个任务,也就是说没有用global语句的情况下,是不能修改全局变量的。

在python的函数使用时,经常会碰到参数定义的问题。如果不声明全局变量,会报错

count = 1
def cc():
 count = count+1
cc()
Traceback (most recent call last):
File "<ipython-input-17-f6b58c567c1a>", line 1, in <module>
 cc()
File "<ipython-input-16-aab94f1185b9>", line 2, in cc
 count = count+1
UnboundLocalError: local variable 'count' referenced before assignment

意思是说count为局部变量,在使用它之前没有被赋值。在函数内无法直接使用全局变量。

num = 1
id(num)
Out[31]: 1886744032
def cc():
 num = 2
 print(id(num))
 print(num)
cc()
1886744064
2

可以看出函数里面的num是局部变量,有什么办法能在函数内使用全局变量呢?根据官方文档,可以用global语句:

1.The global statement is a declaration which holds for the entire current code block. It means that the
2.listed identifiers are to be interpreted as globals. It would be impossible to assign to a global variable without global.

意思是说global语句可以声明一个或多个变量为全局变量。该声明仅在当前代码块中有效。除此之外,没办法访问全局变量。所以在函数中添加global声明:

def cc():
 global count
 count = count+1
 print(count)
cc()
2

用global声明多个变量需要用逗号分隔:

num = 0
def cc():
 global count,num
 count = count+1
 num = num+2
 print(count,num)
cc()
3 2
# 可以函数中的global声明能够修改全局变量
num
Out[24]: 2
# 
count
Out[25]: 3
在使用全局变量的场合,也可用类变量代替
class C:
 count = 3
def cc():
 count = C.count+1
 print(count)
cc()
4

如果是想在函数中调用全局变量,这需要global声明。之后调用全局变量,全局变量的值也随之可能发生改变,如果是count = count+1这种再定义的时候,否则全局变量只是被调用。也可以通过class来调用变量的方法达到全局变量的效果

global的作用就相当于传递参数,在函数外部声明的变量,如果在函数内想要使用,就用global来声明该变量,这样就相当于把该变量传递进来了,就可以引用该变量了

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。如果你想了解更多相关内容请查看下面相关链接

Python 相关文章推荐
Python2.x和3.x下maketrans与translate函数使用上的不同
Apr 13 Python
使用Python从有道词典网页获取单词翻译
Jul 03 Python
linux环境下的python安装过程图解(含setuptools)
Nov 22 Python
Python实现将json文件中向量写入Excel的方法
Mar 26 Python
python实现石头剪刀布程序
Jan 20 Python
Python微医挂号网医生数据抓取
Jan 24 Python
Django连接数据库并实现读写分离过程解析
Nov 13 Python
Python列表切片常用操作实例解析
Dec 16 Python
Python如何使用队列方式实现多线程爬虫
May 12 Python
Python监听键盘和鼠标事件的示例代码
Nov 18 Python
利用Python实现自动扫雷小脚本
Dec 17 Python
用pushplus+python监控亚马逊到货动态推送微信
Jan 29 Python
Win10下python 2.7.13 安装配置方法图文教程
Sep 18 #Python
Python sorted函数详解(高级篇)
Sep 18 #Python
python 2.7.13 安装配置方法图文教程
Sep 18 #Python
Python DataFrame.groupby()聚合函数,分组级运算
Sep 18 #Python
python 3.6.2 安装配置方法图文教程
Sep 18 #Python
Python对CSV、Excel、txt、dat文件的处理
Sep 18 #Python
python 3.6.4 安装配置方法图文教程
Sep 18 #Python
You might like
无线电波是什么?它是怎样传输的?
2021/03/01 无线电
基于文本的搜索
2006/10/09 PHP
理解PHP中的Session及对Session有效期的控制
2016/01/08 PHP
PHP+Apache环境中如何隐藏Apache版本
2017/11/24 PHP
extjs 学习笔记(二) Ext.Element类
2009/10/13 Javascript
别了 JavaScript中的isXX系列
2012/08/01 Javascript
JavaScript高级程序设计(第3版)学习笔记2 js基础语法
2012/10/11 Javascript
js select option对象小结
2013/12/20 Javascript
javascript实现playfair和hill密码算法
2014/12/07 Javascript
jQuery技巧之让任何组件都支持类似DOM的事件管理
2016/04/05 Javascript
jQuery的promise与deferred对象在异步回调中的作用
2016/05/03 Javascript
gulp-uglify 与gulp.watch()配合使用时报错(重复压缩问题)
2016/08/24 Javascript
Node.js常用工具之util模块
2017/03/09 Javascript
基于vue+ bootstrap实现图片上传图片展示功能
2017/05/17 Javascript
基于vue2.0实现的级联选择器
2017/06/09 Javascript
基于 Vue 的树形选择组件的示例代码
2017/08/18 Javascript
使用cropper.js裁剪头像的实例代码
2017/09/29 Javascript
React Native实现地址挑选器功能
2017/10/24 Javascript
NodeJs实现定时任务的示例代码
2017/12/05 NodeJs
spring+angular实现导出excel的实现代码
2019/02/27 Javascript
react 组件传值的三种方法
2019/06/03 Javascript
jquery轮播图插件使用方法详解
2020/07/31 jQuery
基于Python的关键字监控及告警
2017/07/06 Python
python 自定义异常和异常捕捉的方法
2018/10/18 Python
获取python运行输出的数据并解析存为dataFrame实例
2020/07/07 Python
降低python版本的操作方法
2020/09/11 Python
实例讲解使用SVG制作loading加载动画的方法
2016/04/05 HTML / CSS
移动端Html5中百度地图的点击事件
2019/01/31 HTML / CSS
Html5之自定义属性(data-,dataset)
2019/11/19 HTML / CSS
香港太阳眼镜网上商店:SmartBuyGlasses香港
2016/07/22 全球购物
城市轨道专业个人求职信范文
2013/09/23 职场文书
毕业论文指导教师评语
2014/12/30 职场文书
2015夏季作息时间调整通知
2015/04/24 职场文书
2015重阳节座谈会主持词
2015/07/30 职场文书
如何在C++中调用Python
2021/05/21 Python
GitHub上77.9K的Axios项目有哪些值得借鉴的地方详析
2021/06/15 Javascript