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基础教程之基本内置数据类型介绍
Feb 20 Python
详解Python中with语句的用法
Apr 15 Python
numpy.transpose对三维数组的转置方法
Apr 17 Python
Python判断中文字符串是否相等的实例
Jul 06 Python
解决python字典对值(值为列表)赋值出现重复的问题
Jan 20 Python
python 实现selenium断言和验证的方法
Feb 13 Python
详解Python中的各种转义符\n\r\t
Jul 10 Python
Python函数装饰器原理与用法详解
Aug 16 Python
使用Python脚本从文件读取数据代码实例
Jan 19 Python
python爬虫开发之使用Python爬虫库requests多线程抓取猫眼电影TOP100实例
Mar 10 Python
Python利用for循环打印星号三角形的案例
Apr 12 Python
python反编译教程之2048小游戏实例
Mar 03 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如何获取文件的扩展名
2015/10/28 PHP
PHP MSSQL 分页实例
2016/04/13 PHP
YII2 实现多语言配置的方法分享
2017/01/11 PHP
PHP实现图片的等比缩放和Logo水印功能示例
2017/05/04 PHP
Node.js中的模块机制学习笔记
2014/11/04 Javascript
JS实现保留n位小数的四舍五入问题示例
2016/08/03 Javascript
滚动条的监听与内容随着滚动条动态加载的实现
2017/02/08 Javascript
JavaScript函数参数的传递方式详解
2017/03/06 Javascript
JavaScript实现弹窗效果代码分析
2017/03/09 Javascript
jQuery插件FusionCharts绘制的3D环饼图效果示例【附demo源码】
2017/04/02 jQuery
JavaScript中使用参数个数实现重载功能
2017/09/01 Javascript
es6系列教程_ Map详解以及常用api介绍
2017/09/25 Javascript
JS实现的找零张数最小问题示例
2017/11/28 Javascript
vue插件开发之使用pdf.js实现手机端在线预览pdf文档的方法
2018/07/12 Javascript
记一次vue去除#问题处理经过小结
2019/01/24 Javascript
详解js 创建对象的几种方法
2019/03/08 Javascript
小程序登录/注册页面设计的实现代码
2019/05/24 Javascript
jquery.pager.js分页实现详解
2019/07/29 jQuery
django model去掉unique_together报错的解决方案
2016/10/18 Python
Python通过matplotlib绘制动画简单实例
2017/12/13 Python
python如何为创建大量实例节省内存
2018/03/20 Python
opencv实现简单人脸识别
2021/02/19 Python
python实现引用其他路径包里面的模块
2020/03/09 Python
浅析CSS3中鲜为人知的属性:-webkit-tap-highlight-color
2017/01/12 HTML / CSS
顶丰TOPPIK台湾官网:增发纤维假发,告别秃发困扰
2018/06/13 全球购物
给物业的表扬信
2014/01/21 职场文书
公证委托书模板
2014/04/03 职场文书
个人投资计划书
2014/05/01 职场文书
依法行政工作汇报材料
2014/10/28 职场文书
公务员考察材料
2014/12/23 职场文书
办公室主任岗位竞聘书
2015/09/15 职场文书
车位出租协议书范本
2016/03/19 职场文书
2019年最新七夕唯美祝福语(60条)
2019/07/22 职场文书
解决goland 导入项目后import里的包报红问题
2021/05/06 Golang
element多个表单校验的实现
2021/05/27 Javascript
Windows环境下实现批量执行Sql文件
2021/10/05 SQL Server