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中使用enumerate函数遍历元素实例
Jun 16 Python
用Python从零实现贝叶斯分类器的机器学习的教程
Mar 31 Python
深入探究Python中变量的拷贝和作用域问题
May 05 Python
Python中的字符串操作和编码Unicode详解
Jan 18 Python
pip matplotlib报错equired packages can not be built解决
Jan 06 Python
解决python3 安装完Pycurl在import pycurl时报错的问题
Oct 15 Python
python中while和for的区别总结
Jun 28 Python
Python生成个性签名图片获取GUI过程解析
Dec 16 Python
Python 实现try重新执行
Dec 21 Python
Pytorch Tensor的统计属性实例讲解
Dec 30 Python
解决Pytorch自定义层出现多Variable共享内存错误问题
Jun 28 Python
python代码实现备忘录案例讲解
Jul 26 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 date函数参数详解
2006/11/27 PHP
PHP最常用的正则表达式
2017/02/13 PHP
基于Jquery的标签智能验证实现代码
2010/12/27 Javascript
Extjs中通过Tree加载右侧TabPanel具体实现
2013/05/05 Javascript
多个$(document).ready()的执行顺序实例分析
2014/07/26 Javascript
Linux下使用jq友好的打印JSON技巧分享
2014/11/18 Javascript
JS+CSS实现的拖动分页效果实例
2015/05/11 Javascript
不依赖Flash和任何JS库实现文本复制与剪切附源码下载
2015/10/09 Javascript
javascript跑马灯抽奖实例讲解
2020/04/17 Javascript
避免jQuery名字冲突 noConflict()方法
2016/07/30 Javascript
form+iframe解决跨域上传文件的方法
2016/11/18 Javascript
JS使用插件cryptojs进行加密解密数据实例
2017/05/11 Javascript
使用JS实现气泡跟随鼠标移动的动画效果
2017/09/16 Javascript
Bootstrap Table 搜索框和查询功能
2017/11/30 Javascript
vue-content-loader内容加载器的使用方法
2018/08/05 Javascript
node.js微信小程序配置消息推送的实现
2019/02/13 Javascript
解决Angularjs异步操作后台请求用$q.all排列先后顺序问题
2019/11/29 Javascript
解决Antd Table组件表头不对齐的问题
2020/10/27 Javascript
python实现给数组按片赋值的方法
2015/07/28 Python
Python(Django)项目与Apache的管理交互的方法
2018/05/16 Python
python绘制直线的方法
2018/06/30 Python
Linux下python制作名片示例
2018/07/20 Python
python中reader的next用法
2018/07/24 Python
对Python w和w+权限的区别详解
2019/01/23 Python
python远程邮件控制电脑升级版
2019/05/23 Python
使用python脚本自动创建pip.ini配置文件代码实例
2019/09/20 Python
python利用proxybroker构建爬虫免费IP代理池的实现
2021/02/21 Python
去加拿大的旅行和假期:Canadian Affair
2016/10/25 全球购物
美国CVS药店官网:CVS Pharmacy
2018/07/26 全球购物
FORZIERI福喜利中国官网:奢侈品购物梦工厂
2019/05/03 全球购物
采购内勤岗位职责
2013/12/10 职场文书
幼儿园中班个人总结
2015/02/28 职场文书
务工证明怎么写
2015/06/18 职场文书
nginx对http请求处理的各个阶段详析
2021/03/31 Servers
idea 在springboot中使用lombok插件的方法
2021/08/02 Java/Android
微信小程序中wxs文件的一些妙用分享
2022/02/18 Javascript