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的判断语句模拟三目运算
Apr 24 Python
Python求导数的方法
May 09 Python
python+os根据文件名自动生成文本
Mar 21 Python
python TF-IDF算法实现文本关键词提取
May 29 Python
Python实现12306火车票抢票系统
Jul 04 Python
对django2.0 关联表的必填on_delete参数的含义解析
Aug 09 Python
基于pytorch 预训练的词向量用法详解
Jan 06 Python
pycharm导入源码的具体步骤
Aug 04 Python
python pygame 愤怒的小鸟游戏示例代码
Feb 25 Python
python 爬取豆瓣网页的示例
Apr 13 Python
python基础入门之普通操作与函数(三)
Jun 13 Python
PYTHON InceptionV3模型的复现详解
May 06 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 之 写时复制介绍(Copy On Write)
2014/05/13 PHP
ThinkPHP中的三大自动简介
2014/08/22 PHP
PHP中使用虚代理实现延迟加载技术
2014/11/05 PHP
PHP使用ActiveMQ实例
2018/02/05 PHP
PHP面向对象五大原则之依赖倒置原则(DIP)详解
2018/04/08 PHP
JQuery 遮罩层实现(mask)实现代码
2010/01/09 Javascript
JavaScript 和 Java 的区别浅析
2013/07/31 Javascript
jQuery绑定事件不执行但alert后可以正常执行
2014/06/03 Javascript
jQuery Ajax调用WCF服务详细教程
2015/03/31 Javascript
jQuery实现页面内锚点平滑跳转特效的方法总结
2015/05/11 Javascript
利用Vue.js指令实现全选功能
2016/09/08 Javascript
angular中的http拦截器Interceptors的实现
2017/02/21 Javascript
整理一些最近经常遇到的前端面试题
2017/04/25 Javascript
浅谈Vue.nextTick 的实现方法
2017/10/25 Javascript
JS实现简单的浮动碰撞效果示例
2017/12/28 Javascript
vue mounted 调用两次的完美解决办法
2018/10/29 Javascript
js实现图片无缝循环轮播
2019/10/28 Javascript
[01:08]DOTA2次级职业联赛 - Shield战队宣传片
2014/12/01 DOTA
Flask的图形化管理界面搭建框架Flask-Admin的使用教程
2016/06/13 Python
利用Python实现Windows下的鼠标键盘模拟的实例代码
2017/07/13 Python
Python实现购物评论文本情感分析操作【基于中文文本挖掘库snownlp】
2018/08/07 Python
Python将string转换到float的实例方法
2019/07/29 Python
Python列表如何更新值
2020/05/27 Python
CSS3媒体查询(Media Queries)介绍
2013/09/12 HTML / CSS
Html5获取高德地图定位天气的方法
2019/12/26 HTML / CSS
巴西食品补充剂在线零售商:Músculos na Web
2017/08/07 全球购物
Zipadee-Zip襁褓过渡毯:Sleeping Baby
2018/12/30 全球购物
什么叫做SQL注入,如何防止
2016/10/04 面试题
金士达面试非笔试
2012/03/14 面试题
几个常见的消息中间件(MOM)
2014/01/08 面试题
晋江市委常委班子四风问题整改工作方案
2014/10/26 职场文书
公司租车协议书
2015/01/29 职场文书
2015年防汛工作总结
2015/05/15 职场文书
升学宴家长致辞
2015/07/27 职场文书
同学聚会开幕词
2019/04/02 职场文书
导游词之无锡古运河
2019/11/14 职场文书