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代码的打包与发布详解
Jul 30 Python
python数组复制拷贝的实现方法
Jun 09 Python
Python随手笔记第一篇(2)之初识列表和元组
Jan 23 Python
Python实现简单的四则运算计算器
Nov 02 Python
python OpenCV学习笔记实现二维直方图
Feb 08 Python
python 实现批量xls文件转csv文件的方法
Oct 23 Python
Python装饰器用法实例分析
Jan 14 Python
Python查找最长不包含重复字符的子字符串算法示例
Feb 13 Python
Python第三方库face_recognition在windows上的安装过程
May 03 Python
Pycharm 使用 Pipenv 新建的虚拟环境(图文详解)
Apr 16 Python
详解如何在pyqt中通过OpenCV实现对窗口的透视变换
Sep 20 Python
如何使用pdb进行Python调试
Jun 30 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
zend framework框架中url大小写问题解决方法
2014/08/19 PHP
thinkphp微信开之安全模式消息加密解密不成功的解决办法
2015/12/02 PHP
javascript 动态设置已知select的option的value值的代码
2009/12/16 Javascript
容易被忽略的JS脚本特性
2011/09/13 Javascript
Firefox和IE兼容性问题及解决方法总结
2013/10/08 Javascript
jQuery插件开发详细教程
2014/06/06 Javascript
jQuery固定浮动侧边栏实现思路及代码
2014/09/28 Javascript
bootstrap多种样式进度条展示
2016/12/20 Javascript
JavaScript中Math对象的方法介绍
2017/01/05 Javascript
纯javaScript、jQuery实现个性化图片轮播【推荐】
2017/01/08 Javascript
vue双向数据绑定原理探究(附demo)
2017/01/17 Javascript
canvas实现钟表效果
2017/02/13 Javascript
JS 验证密码 不能为空,必须含有数字、字母、特殊字符,长度在8-12位
2017/06/21 Javascript
vue.js绑定事件监听器示例【基于v-on事件绑定】
2018/07/07 Javascript
vue鼠标移入添加class样式,鼠标移出去除样式(active)实现方法
2018/08/22 Javascript
基于 jQuery 实现键盘事件监听控件
2019/04/04 jQuery
详解vue页面首次加载缓慢原因及解决方案
2019/11/06 Javascript
js如何验证密码强度
2020/03/18 Javascript
Ant Design Vue table中列超长显示...并加提示语的实例
2020/10/31 Javascript
[04:46]2018年度玩家喜爱的电竞媒体-完美盛典
2018/12/16 DOTA
对python中return和print的一些理解
2017/08/18 Python
python logging模块的使用总结
2019/07/09 Python
完美解决jupyter由于无法import新包的问题
2020/05/26 Python
使用TensorBoard进行超参数优化的实现
2020/07/06 Python
行政经理岗位职责
2013/11/09 职场文书
幼儿园大班毕业感言
2014/02/06 职场文书
村党的群众路线教育实践活动工作总结
2014/10/25 职场文书
2014小学数学教师个人工作总结
2014/12/18 职场文书
法律意见书范文
2015/06/04 职场文书
利用python做数据拟合详情
2021/11/17 Python
Spring this调用当前类方法无法拦截的示例代码
2022/03/20 Java/Android
未发现nvidia显卡怎么办?Win11系统中未检测到nvidia显卡解决教程
2022/04/08 数码科技
python中redis包操作数据库的教程
2022/04/19 Python
聊聊CSS粘性定位sticky案例解析
2022/06/01 HTML / CSS
Docker部署Mysql8的实现步骤
2022/07/07 Servers
Python如何将list中的string转换为int
2022/07/15 Ruby