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的Django框架中创建模板库的方法
Jul 20 Python
Python出现segfault错误解决方法
Apr 16 Python
书单|人生苦短,你还不用python!
Dec 29 Python
python使用itchat库实现微信机器人(好友聊天、群聊天)
Jan 04 Python
python监测当前联网状态并连接的实例
Dec 18 Python
详解安装mitmproxy以及遇到的坑和简单用法
Jan 21 Python
python3使用QQ邮箱发送邮件
May 20 Python
网易有道2017内推编程题 洗牌(python)
Jun 19 Python
Python turtle绘画象棋棋盘
Aug 21 Python
Python 使用元类type创建类对象常见应用详解
Oct 17 Python
django多种支付、并发订单处理实例代码
Dec 13 Python
实例详解Python的进程,线程和协程
Mar 13 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
星际争霸中的对战模式介绍
2020/03/04 星际争霸
模板引擎正则表达式调试小技巧
2011/07/20 PHP
php密码生成类实例
2014/09/24 PHP
PHP cURL初始化和执行方法入门级代码
2015/05/28 PHP
PHP程序员不应该忽略的3点
2015/10/09 PHP
ThinkPHP框架表单验证操作方法
2017/07/19 PHP
分享5个非常有用的Laravel Blade指令
2018/05/30 PHP
javascript包装对象实例分析
2015/03/27 Javascript
JavaScript基于setTimeout实现计数的方法
2015/05/08 Javascript
jsonp跨域请求数据实现手机号码查询实例分析
2015/12/12 Javascript
Nodejs Stream 数据流使用手册
2016/04/17 NodeJs
nodejs 实现钉钉ISV接入的加密解密方法
2017/01/16 NodeJs
BootStrap实现带关闭按钮功能
2017/02/15 Javascript
Bootstrap 过渡效果Transition 模态框(Modal)
2017/03/17 Javascript
Bootstrap与Angularjs的模态框实例代码
2017/08/03 Javascript
JS设计模式之策略模式概念与用法分析
2018/02/05 Javascript
JS获取并处理php数组的方法实例分析
2018/09/04 Javascript
js常用方法、检查是否有特殊字符串、倒序截取字符串操作完整示例
2020/01/26 Javascript
使用Webpack 搭建 Vue3 开发环境过程详解
2020/07/28 Javascript
[02:04]2018DOTA2亚洲邀请赛Secret赛前采访
2018/04/03 DOTA
[01:20:37]FNATIC vs NIP 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
python Flask实现restful api service
2017/12/04 Python
Python一个简单的通信程序(客户端 服务器)
2019/03/06 Python
django的聚合函数和aggregate、annotate方法使用详解
2019/07/23 Python
python requests使用socks5的例子
2019/07/25 Python
Python 一行代码能实现丧心病狂的功能
2020/01/18 Python
Tensorflow 实现将图像与标签数据转化为tfRecord文件
2020/02/17 Python
django 模版关闭转义方式
2020/05/14 Python
python3列表删除大量重复元素remove()方法的问题详解
2021/01/04 Python
深入理解HTML5定时器requestAnimationFrame的使用
2018/12/12 HTML / CSS
外贸业务员工作职责
2014/01/06 职场文书
婚礼主持词
2014/03/13 职场文书
庆国庆活动总结
2014/08/28 职场文书
同学聚会通知书
2015/04/20 职场文书
Golang bufio详细讲解
2022/04/21 Golang
详解CSS中postion和opacity及cursor的特性
2022/08/14 HTML / CSS