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实现颜色空间转换程序(Tkinter)
Dec 31 Python
结合Python的SimpleHTTPServer源码来解析socket通信
Jun 27 Python
python爬虫爬取淘宝商品信息(selenum+phontomjs)
Feb 24 Python
Python实现获取前100组勾股数的方法示例
May 04 Python
深入理解Python中的 __new__ 和 __init__及区别介绍
Sep 17 Python
Python函数返回不定数量的值方法
Jan 22 Python
python实现Virginia无密钥解密
Mar 20 Python
解决Django Static内容不能加载显示的问题
Jul 28 Python
python pprint模块中print()和pprint()两者的区别
Feb 10 Python
终于搞懂了Keras中multiloss的对应关系介绍
Jun 22 Python
基于Python实现下载网易音乐代码实例
Aug 10 Python
django中cookiecutter的使用教程
Dec 03 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设计模式 Bridge (桥接模式)
2011/06/26 PHP
解析 thinkphp 框架中的部分方法
2017/05/07 PHP
[HTML/CSS/Javascript]WWTJS
2007/09/25 Javascript
Javascript 生成指定范围数值随机数
2009/01/09 Javascript
js中同步与异步处理的方法和区别总结
2013/12/25 Javascript
jQuery焦点图轮播插件KinSlideshow用法分析
2016/06/08 Javascript
再谈javascript常见错误及解决方法
2016/09/16 Javascript
微信、QQ、微博、Safari中使用js唤起App
2018/01/24 Javascript
Angular学习笔记之集成三方UI框架、控件的示例
2018/03/23 Javascript
vue2.0实现移动端的输入框实时检索更新列表功能
2018/05/08 Javascript
vue.js表单验证插件(vee-validate)的使用教程详解
2019/05/23 Javascript
vue和小程序项目中使用iconfont的方法
2020/05/19 Javascript
使用Python的Flask框架表单插件Flask-WTF实现Web登录验证
2016/07/12 Python
Python面向对象之类和对象属性的增删改查操作示例
2018/12/14 Python
使用python制作一个为hex文件增加版本号的脚本实例
2019/06/12 Python
Python基础学习之函数方法实例详解
2019/06/18 Python
python实现电子书翻页小程序
2019/07/23 Python
Python对接 xray 和微信实现自动告警
2019/09/17 Python
python多进程间通信代码实例
2019/09/30 Python
python自动化实现登录获取图片验证码功能
2019/11/20 Python
如何利用python web框架做文件流下载的实现示例
2020/06/02 Python
PyCharm 2020.2 安装详细教程
2020/09/25 Python
澳洲小众品牌的集合网站:BNKR
2018/02/23 全球购物
软件工程师面试题
2012/06/25 面试题
会计专业毕业生推荐信
2013/11/05 职场文书
主管职责范文
2013/11/09 职场文书
纪念建党演讲稿范文
2014/01/13 职场文书
教师师德反思材料
2014/02/15 职场文书
环保建议书100字
2014/05/14 职场文书
事业单位考核材料
2014/05/21 职场文书
党的群众路线教育实践活动先进个人材料
2014/12/24 职场文书
事业单位年度考核评语
2014/12/31 职场文书
英文道歉信
2015/01/20 职场文书
2015年清明节网上祭英烈活动总结
2015/03/26 职场文书
Ajax实现三级联动效果
2021/10/05 Javascript
Python获取指定日期是"星期几"的6种方法
2022/03/13 Python