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 相关文章推荐
python学习之面向对象【入门初级篇】
Jan 21 Python
Python实现复杂对象转JSON的方法示例
Jun 22 Python
Python引用传值概念与用法实例小结
Oct 07 Python
PyTorch上搭建简单神经网络实现回归和分类的示例
Apr 28 Python
使用python Fabric动态修改远程机器hosts的方法
Oct 26 Python
Python实现直方图均衡基本原理解析
Aug 08 Python
python使用SQLAlchemy操作MySQL
Jan 02 Python
jupyter notebook oepncv 显示一张图像的实现
Apr 24 Python
解析python 中/ 和 % 和 //(地板除)
Jun 28 Python
Python使用文件操作实现一个XX信息管理系统的示例
Jul 02 Python
Python预测2020高考分数和录取情况
Jul 08 Python
Python time库的时间时钟处理
May 02 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
详解PHP显示MySQL数据的三种方法
2008/06/05 PHP
PHP生成不重复随机数的方法汇总
2014/11/19 PHP
在openSUSE42.1下编译安装PHP7 的方法
2015/12/24 PHP
joomla组件开发入门教程
2016/05/04 PHP
PHP查看SSL证书信息的方法
2016/09/22 PHP
一些相见恨晚的 JavaScript 技巧
2010/04/25 Javascript
this和执行上下文实现代码
2010/07/01 Javascript
在多个页面使用同一个HTML片段的代码
2011/03/04 Javascript
JavaScript 布尔操作符解析  &amp;&amp; || !
2012/08/10 Javascript
jQuery 插件仿百度搜索框智能提示(带Value值)
2013/01/22 Javascript
JavaScript实现表格排序方法
2013/06/14 Javascript
jquery实现带单选按钮的表格行选中时高亮显示
2013/08/01 Javascript
jquery scroll()区分横向纵向滚动条的方法
2014/04/04 Javascript
基于jQuery实现的文字按钮表单特效整理
2014/12/07 Javascript
Javascript中数组方法汇总(推荐)
2015/04/01 Javascript
AngularJS使用自定义指令替代ng-repeat的方法
2016/09/17 Javascript
jQuery Validate 校验多个相同name的方法
2017/05/18 jQuery
vue component组件使用方法详解
2017/07/14 Javascript
jqueryUI tab标签页代码分享
2017/10/09 jQuery
谈谈vue中mixin的一点理解
2017/12/12 Javascript
QQ跳转支付宝并自动领红包脚本(最新)
2018/06/22 Javascript
vue设置动态请求地址的例子
2019/11/01 Javascript
vue实现div可拖动位置也可改变盒子大小的原理
2020/09/16 Javascript
Python随机生成数模块random使用实例
2015/04/13 Python
django中forms组件的使用与注意
2019/07/08 Python
Pytorch 数据加载与数据预处理方式
2019/12/31 Python
一款纯css3实现的响应式导航
2014/10/31 HTML / CSS
欧洲最大的婴幼儿服装及内衣公司:Petit Bateau(小帆船)
2016/08/16 全球购物
信息管理专业推荐信
2013/10/29 职场文书
装潢设计专业推荐信模板
2013/11/26 职场文书
初中三好学生事迹材料
2014/01/13 职场文书
初中班主任经验交流材料
2014/05/16 职场文书
升学宴来宾致辞
2015/07/27 职场文书
Oracle设置DB、监听和EM开机启动的方法
2021/04/25 Oracle
mapstruct的用法之qualifiedByName示例详解
2022/04/06 Java/Android
Python保存并浏览用户的历史记录
2022/04/29 Python