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的Flask框架中使用Flask-Migrate扩展迁移数据库的教程
Jun 14 Python
Python语言描述随机梯度下降法
Jan 04 Python
解决pandas 作图无法显示中文的问题
May 24 Python
Python中return self的用法详解
Jul 27 Python
Python使用分布式锁的代码演示示例
Jul 30 Python
Python3 利用requests 库进行post携带账号密码请求数据的方法
Oct 26 Python
matplotlib命令与格式之tick坐标轴日期格式(设置日期主副刻度)
Aug 06 Python
python 实现dict转json并保存文件
Dec 05 Python
详解Python在使用JSON时需要注意的编码问题
Dec 06 Python
python使用OpenCV模块实现图像的融合示例代码
Apr 10 Python
解决python对齐错误的方法
Jul 16 Python
python process模块的使用简介
May 14 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学习之数组的定义和填充
2011/04/17 PHP
PHP几个实用自定义函数小结
2016/01/25 PHP
PHP内置函数生成随机数实例
2019/01/18 PHP
php实现的顺序线性表示例
2019/05/04 PHP
laravel框架中视图的基本使用方法分析
2019/11/23 PHP
JavaScript 产生不重复的随机数三种实现思路
2012/12/13 Javascript
JS添加删除一组文本框并对输入信息加以验证判断其正确性
2013/04/11 Javascript
js实现iframe框架取值的方法(兼容IE,firefox,chrome等)
2015/11/26 Javascript
手把手教你搭建ES6的开发运行环境
2017/07/11 Javascript
Angularjs单选框相关的示例代码
2017/08/17 Javascript
使用vue制作探探滑动堆叠组件的实例代码
2018/03/07 Javascript
浅谈React 服务器端渲染的使用
2018/05/08 Javascript
jQuery实现的点击图片居中放大缩小功能示例
2019/01/16 jQuery
微信小程序iBeacon测距及稳定程序的实现解析
2019/07/31 Javascript
Javascript操作select控件代码实例
2020/02/14 Javascript
[29:10]Ti4 冒泡赛第二天 NEWBEE vs Titan 3
2014/07/15 DOTA
Django框架中数据的连锁查询和限制返回数据的方法
2015/07/17 Python
Python闭包执行时值的传递方式实例分析
2018/06/04 Python
在Python中获取两数相除的商和余数方法
2018/11/10 Python
Python标准库使用OrderedDict类的实例讲解
2019/02/14 Python
Django 项目重命名的实现步骤解析
2019/08/14 Python
Pytorch中Tensor与各种图像格式的相互转化详解
2019/12/26 Python
离线状态下在jupyter notebook中使用plotly实例
2020/04/24 Python
python Yaml、Json、Dict之间的转化
2020/10/19 Python
轻松掌握CSS3中的字体大小单位rem的使用方法
2016/05/24 HTML / CSS
英国标志性奢侈品牌:Burberry
2016/07/28 全球购物
Waterford美国官网:爱尔兰水晶制品品牌
2017/04/26 全球购物
英国最大的笔记本电脑直销专家:Laptops Direct
2019/07/20 全球购物
介绍一下木马病毒的种类
2015/07/26 面试题
初中校园之声广播稿
2014/01/15 职场文书
音乐兴趣小组活动总结
2014/07/07 职场文书
2016春季田径运动会广播稿
2015/12/21 职场文书
vue3如何优雅的实现移动端登录注册模块
2021/03/29 Vue.js
MATLAB 全景图切割及盒图显示的实现步骤
2021/05/14 Python
使用redis生成唯一编号及原理示例详解
2021/09/15 Redis
Vue监视数据的原理详解
2022/02/24 Vue.js