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设置tmpfs来加速项目的教程
Apr 17 Python
详解Django缓存处理中Vary头部的使用
Jul 24 Python
在Mac OS系统上安装Python的Pillow库的教程
Nov 20 Python
mysql 之通过配置文件链接数据库
Aug 12 Python
python使用邻接矩阵构造图代码示例
Nov 10 Python
python pandas读取csv后,获取列标签的方法
Nov 12 Python
在Pycharm中执行scrapy命令的方法
Jan 16 Python
python实现坦克大战
Apr 24 Python
Django之富文本(获取内容,设置内容方式)
May 21 Python
为什么相对PHP黑python的更少
Jun 21 Python
Python 如何操作 SQLite 数据库
Aug 17 Python
Python selenium绕过webdriver监测执行javascript
Apr 12 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获取文件扩展名的4种方法
2015/11/24 PHP
PHP编写daemon process详解及实例代码
2016/09/30 PHP
PHP实现随机数字、字母的验证码功能
2018/08/01 PHP
PHP通过调用新浪API生成t.cn格式短网址链接的方法详解
2019/02/20 PHP
js打印纸函数代码(递归)
2010/06/18 Javascript
javascript中的prototype属性使用说明(函数功能扩展)
2010/08/16 Javascript
javscript对象原型的一些看法
2010/09/19 Javascript
用jQuery中的ajax分页实现代码
2011/09/20 Javascript
js读写(删除)Cookie实例详解
2013/04/17 Javascript
JS/jQuery实现默认显示部分文字点击按钮显示全部内容
2013/05/13 Javascript
javascript中数组的冒泡排序使用示例
2013/12/18 Javascript
nodejs开发环境配置与使用
2014/11/17 NodeJs
javascript的tab切换原理与效果实现方法
2015/01/10 Javascript
微信小程序加载更多 点击查看更多
2016/11/29 Javascript
Bootstrap基本组件学习笔记之导航(10)
2016/12/07 Javascript
React组件之间的通信的实例代码
2017/06/27 Javascript
Vue.js弹出模态框组件开发的示例代码
2017/07/26 Javascript
layui.tree组件的使用以及搜索节点功能的实现
2019/09/26 Javascript
python 判断一个进程是否存在
2009/04/09 Python
Python实现list反转实例汇总
2014/11/11 Python
python 循环遍历字典元素的简单方法
2016/09/11 Python
python OpenCV学习笔记实现二维直方图
2018/02/08 Python
python使用matplotlib画饼状图
2018/09/25 Python
解决Python安装时报缺少DLL问题【两种解决方法】
2019/07/15 Python
python多线程实现同时执行两个while循环的操作
2020/05/02 Python
python实现简单遗传算法
2020/09/18 Python
Python中logging日志的四个等级和使用
2020/11/17 Python
使用python爬取抖音app视频的实例代码
2020/12/01 Python
小学教师国培感言
2014/02/08 职场文书
公务员转正鉴定材料
2014/02/11 职场文书
《山谷中的谜底》教学反思
2014/04/26 职场文书
兴趣小组活动总结
2014/05/05 职场文书
社区安全生产月活动总结
2014/07/05 职场文书
2014年体育教学工作总结
2014/12/09 职场文书
2014保险公司内勤工作总结
2014/12/16 职场文书
债务追讨律师函
2015/06/24 职场文书