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 相关文章推荐
Python3写入文件常用方法实例分析
May 22 Python
Python 使用requests模块发送GET和POST请求的实现代码
Sep 21 Python
Python 编码规范(Google Python Style Guide)
May 05 Python
Python实现字典(dict)的迭代操作示例
Jun 05 Python
Python3实现统计单词表中每个字母出现频率的方法示例
Jan 28 Python
详解Python循环作用域与闭包
Mar 21 Python
PyQt编程之如何在屏幕中央显示窗体的实例
Jun 18 Python
Python 微信爬虫完整实例【单线程与多线程】
Jul 06 Python
django数据模型on_delete, db_constraint的使用详解
Dec 24 Python
学会python自动收发邮件 代替你问候女友
May 20 Python
给Django Admin添加验证码和多次登录尝试限制的实现
Jul 26 Python
Python内置类型集合set和frozenset的使用详解
Apr 26 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 实用代码收集
2010/01/22 PHP
PHP空值检测函数与方法汇总
2017/11/19 PHP
PHP APP微信提现接口代码
2018/09/30 PHP
PHP使用HTML5 FileApi实现Ajax上传文件功能示例
2019/07/01 PHP
Laravel框架处理用户的请求操作详解
2019/12/20 PHP
javascript在事件监听方面的兼容性小结
2010/04/07 Javascript
js判断选择时间不能小于当前时间的示例代码
2013/09/24 Javascript
node.js中的console.trace方法使用说明
2014/12/09 Javascript
jQuery元素属性操作实例(设置、获取及删除元素属性)
2016/09/08 Javascript
无法获取隐藏元素宽度和高度的解决方案
2017/03/07 Javascript
angularjs的select使用及默认选中设置
2017/04/08 Javascript
详解vue2.0脚手架的webpack 配置文件分析
2017/05/27 Javascript
前端防止用户重复提交js实现代码示例
2018/09/07 Javascript
JavaScript实现瀑布流布局的3种方式
2020/12/27 Javascript
[01:00:30]完美世界DOTA2联赛循环赛 Inki vs Matador BO2第二场 10.31
2020/11/02 DOTA
python针对excel的操作技巧
2018/03/13 Python
读取json格式为DataFrame(可转为.csv)的实例讲解
2018/06/05 Python
Python图像处理之简单画板实现方法示例
2018/08/30 Python
Python利用ORM控制MongoDB(MongoEngine)的步骤全纪录
2018/09/13 Python
python json 递归打印所有json子节点信息的例子
2020/02/27 Python
tensorflow使用L2 regularization正则化修正overfitting过拟合方式
2020/05/22 Python
HTML5的革新 结构之美
2011/06/20 HTML / CSS
HTML5 Canvas draw方法制作动画效果示例
2013/07/11 HTML / CSS
HTML5全屏(Fullscreen)API详细介绍
2015/04/24 HTML / CSS
利用canvas实现图片压缩的示例代码
2018/07/17 HTML / CSS
德国PC硬件网站:CASEKING
2016/10/20 全球购物
Visual-Click葡萄牙:欧洲领先的在线眼镜商
2020/02/17 全球购物
医药个人求职信范文
2014/01/29 职场文书
经典而简洁的婚礼主持词
2014/03/13 职场文书
教师自我剖析材料(群众路线)
2014/09/29 职场文书
师德师风自查总结
2014/10/14 职场文书
财务总监岗位职责范本
2015/04/03 职场文书
运动会通讯稿600字
2015/07/20 职场文书
趣味运动会口号
2015/12/24 职场文书
计算机实训心得体会
2016/01/14 职场文书
vue+elementUI实现表格列的显示与隐藏
2022/04/13 Vue.js