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 paramiko实现ssh远程访问的方法
Dec 03 Python
Python实现PS图像明亮度调整效果示例
Jan 23 Python
Python异常对代码运行性能的影响实例解析
Feb 08 Python
python topN 取最大的N个数或最小的N个数方法
Jun 04 Python
python基于paramiko将文件上传到服务器代码实现
Jul 08 Python
python 处理微信对账单数据的实例代码
Jul 19 Python
python tkinter控件布局项目实例
Nov 04 Python
tensorflow的计算图总结
Jan 12 Python
Python编程快速上手——疯狂填词程序实现方法分析
Feb 29 Python
python使用for...else跳出双层嵌套循环的方法实例
May 17 Python
Django执行源生mysql语句实现过程解析
Nov 12 Python
PyTorch 如何自动计算梯度
May 23 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
php5.3 注意事项说明
2013/07/01 PHP
Mac下快速搭建PHP开发环境步骤详解
2019/05/05 PHP
解决Laravel无法使用COOKIE和SESSION的问题
2019/10/16 PHP
Json2Template.js 基于jquery的插件 绑定JavaScript对象到Html模板中
2011/10/29 Javascript
扩展JavaScript功能的正确方法(译文)
2012/04/12 Javascript
用IE重起计算机或者关机的示例代码
2014/03/10 Javascript
jQuery判断复选框是否勾选的原理及示例
2014/05/21 Javascript
JavaScript基础函数整理汇总
2015/01/30 Javascript
JavaScript在网页中画圆的函数arc使用方法
2015/11/13 Javascript
javascript图片预加载完整实例
2015/12/10 Javascript
JS跨域解决方案之使用CORS实现跨域
2016/04/14 Javascript
JS定义类的六种方式详解
2016/05/12 Javascript
Bootstrap 附加导航(Affix)插件实例详解
2016/06/01 Javascript
jQuery简单实现tab选项卡切换效果
2016/06/20 Javascript
基于bootstrap实现广告轮播带图片和文字效果
2016/07/22 Javascript
微信小程序  自定义创建详细介绍
2016/10/27 Javascript
微信小程序 空白页重定向解决办法
2017/06/27 Javascript
iview form清除校验状态的实现
2019/09/19 Javascript
JS实现躲避粒子小游戏
2020/06/18 Javascript
Vue scoped及deep使用方法解析
2020/08/01 Javascript
解决vant框架做H5时踩过的坑(下拉刷新、上拉加载等)
2020/11/11 Javascript
[13:56]DAC2018 4.5SOLO赛决赛 MidOne vs Paparazi第一场
2018/04/06 DOTA
[52:20]VP vs VG Supermajor小组赛 B组胜者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
Python中文编码那些事
2014/06/25 Python
浅谈对yield的初步理解
2017/05/29 Python
python中reader的next用法
2018/07/24 Python
python多线程并发实例及其优化
2019/06/27 Python
解决Mac下使用python的坑
2019/08/13 Python
python GUI库图形界面开发之PyQt5树形结构控件QTreeWidget详细使用方法与实例
2020/03/02 Python
Booking.com德国:预订最好的酒店和住宿
2020/02/16 全球购物
如何将无状态会话Bean发布为WEB服务,只有无状态会话Bean可以发布为WEB服务?
2015/12/03 面试题
科技开发中心办公室主任岗位责任制
2014/02/10 职场文书
2014财务部年度工作总结
2014/12/08 职场文书
2014年校长工作总结
2014/12/11 职场文书
党校学习党性分析材料
2014/12/19 职场文书
五一放假通知怎么写
2015/08/18 职场文书