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 2.6 升级至 Python 2.7 的实践心得
Apr 27 Python
Python配置mysql的教程(推荐)
Oct 13 Python
Django视图和URL配置详解
Jan 31 Python
Windows下的Jupyter Notebook 安装与自定义启动(图文详解)
Feb 21 Python
Python numpy实现二维数组和一维数组拼接的方法
Jun 05 Python
Python利用神经网络解决非线性回归问题实例详解
Jul 19 Python
pytorch torch.expand和torch.repeat的区别详解
Nov 05 Python
解决python多线程报错:AttributeError: Can't pickle local object问题
Apr 08 Python
使用keras实现Precise, Recall, F1-socre方式
Jun 15 Python
浅谈Python 中的复数问题
May 19 Python
Python中glob库实现文件名的匹配
Jun 18 Python
Python+Selenium自动化环境搭建与操作基础详解
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 星际争霸
加速XP搜索功能堪比vista
2007/03/22 PHP
php模板之Phpbean的目录结构
2008/01/10 PHP
php学习之 循环结构实现代码
2011/06/09 PHP
php入门学习知识点六 PHP文件的读写操作代码
2011/07/14 PHP
thinkphp模板赋值与替换实例简述
2014/11/24 PHP
深入解析PHP的Laravel框架中的event事件操作
2016/03/21 PHP
详解PHP多个进程配合redis的有序集合实现大文件去重
2019/03/06 PHP
tp5.1 框架数据库常见操作详解【添加、删除、更新、查询】
2020/05/26 PHP
javascript Math.random()随机数函数
2009/11/04 Javascript
父子窗体间传递JSON格式的数据的代码
2010/12/25 Javascript
javascript中substring()、substr()、slice()的区别
2015/08/30 Javascript
JS实现网站菜单拖拽移位效果的方法
2015/09/24 Javascript
JavaScript仿微博输入框效果(案例分析)
2016/12/06 Javascript
基于Vue如何封装分页组件
2016/12/16 Javascript
纯js模仿windows系统日历
2017/02/04 Javascript
JS获取浮动(float)元素的style.left值为空的快速解决办法
2017/02/19 Javascript
JS实现留言板功能
2017/06/17 Javascript
webpack写jquery插件的环境配置
2017/12/21 jQuery
angularjs获取到My97DatePicker选中的值方法
2018/10/02 Javascript
Python内置函数之filter map reduce介绍
2014/11/30 Python
python 函数中的内置函数及用法详解
2019/07/02 Python
在主流系统之上安装Pygame的方法
2020/05/20 Python
HTML5页面无缝闪开的问题及解决方案
2020/06/11 HTML / CSS
ALLSAINTS英国官网:伦敦新锐潮流品牌
2016/09/19 全球购物
查找廉价航班和发现新目的地:Kiwi.com
2019/02/25 全球购物
英国在线药房:Express Chemist
2019/03/28 全球购物
介绍一下游标
2012/01/10 面试题
易程科技软件测试笔试
2013/03/24 面试题
教师实习自我鉴定
2013/12/11 职场文书
简单英文演讲稿
2014/01/01 职场文书
关于九一八事变的演讲稿2014
2014/09/17 职场文书
区长工作作风个人整改措施
2014/10/01 职场文书
投诉信范文
2015/07/02 职场文书
关于践行三严三实的心得体会
2016/01/05 职场文书
Python中itertools库的四个函数介绍
2022/04/06 Python