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实现基本进制转换的方法
Jul 11 Python
python中OrderedDict的使用方法详解
May 05 Python
python实时分析日志的一个小脚本分享
May 07 Python
Python计算斗牛游戏概率算法实例分析
Sep 26 Python
python中的global关键字的使用方法
Aug 20 Python
python3实现高效的端口扫描
Aug 31 Python
Python安装及Pycharm安装使用教程图解
Sep 20 Python
opencv+python实现均值滤波
Feb 19 Python
Pytorch中的自动求梯度机制和Variable类实例
Feb 29 Python
Python实现鼠标自动在屏幕上随机移动功能
Mar 14 Python
Python CSS选择器爬取京东网商品信息过程解析
Jun 01 Python
python 使用xlsxwriter循环向excel中插入数据和图片的操作
Jan 01 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 7.0主要新特性
2016/01/07 PHP
微信 开发生成带参数的二维码的实例
2016/11/23 PHP
Javascript根据指定下标或对象删除数组元素
2012/12/21 Javascript
jQuery获得内容和属性方法及示例
2013/12/02 Javascript
[将免费进行到底]在Amazon的一年免费服务器上安装Node.JS, NPM和OurJS博客
2014/08/18 Javascript
node.js中的fs.lchownSync方法使用说明
2014/12/16 Javascript
JS基础随笔(菜鸟必看篇)
2016/07/13 Javascript
微信小程序 toast 详解及实例代码
2016/11/09 Javascript
详解vue-cli 构建Vue项目遇到的坑
2017/08/30 Javascript
VUE2 前端实现 静态二级省市联动选择select的示例
2018/02/09 Javascript
webpack+vuex+axios 跨域请求数据的示例代码
2018/03/06 Javascript
vue动态绑定组件子父组件多表单验证功能的实现代码
2018/05/14 Javascript
Django+vue跨域问题解决的详细步骤
2019/01/20 Javascript
详解vue-cli+element-ui树形表格(多级表格折腾小计)
2019/04/17 Javascript
微信小程序实现Session功能及无法获取session问题的解决方法
2019/05/07 Javascript
浅谈React中组件逻辑复用的那些事儿
2020/05/21 Javascript
JS实现页面鼠标点击出现图片特效
2020/08/19 Javascript
解决vue prop传值default属性如何使用,为何不生效的问题
2020/09/21 Javascript
原生js实现下拉框选择组件
2021/01/20 Javascript
[44:39]2014 DOTA2国际邀请赛中国区预选赛 NE VS CNB
2014/05/21 DOTA
Python中的startswith和endswith函数使用实例
2014/08/25 Python
python正则表达式及使用正则表达式的例子
2018/01/22 Python
Django实现全文检索的方法(支持中文)
2018/05/14 Python
python输出100以内的质数与合数实例代码
2018/07/08 Python
详解Python Qt的窗体开发的基本操作
2019/07/14 Python
Python爬虫学习之翻译小程序
2019/07/30 Python
Python爬虫scrapy框架Cookie池(微博Cookie池)的使用
2021/01/13 Python
canvas中普通动效与粒子动效的实现代码示例
2019/01/03 HTML / CSS
大众服装店创业计划书范文
2014/01/01 职场文书
买房协议书
2014/04/11 职场文书
今冬明春火灾防控工作方案
2014/05/29 职场文书
模具专业求职信
2014/06/26 职场文书
物流管理专业推荐信
2014/09/06 职场文书
市委常委班子党的群众路线教育实践活动整改措施
2014/10/02 职场文书
全国法制宣传日活动总结2014
2014/11/01 职场文书
Anaconda安装pytorch和paddle的方法步骤
2022/04/03 Python