Python global全局变量函数详解
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来声明该变量,这样就相当于把该变量传递进来了,就可以引用该变量了
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接
- RMQ问题(线段树算法,ST算法优化)
- 统计0到n之间1的个数[数学,动态规划dp](经典,详解)
- Selenium2+python自动化40-cookie相关操作
- 【干货】PyTorch实例:用ResNet进行交通标志分类
- 2017年浙江理工大学程序设计竞赛校赛 题解&源码(A.水, D. 简单贪心 ,E.数论,I 暴力)
- Selenium2+python自动化41-绕过验证码(add_cookie)
- C语言求最小公倍数和最大公约数三种算法(经典)
- Selenium2+python自动化47-判断弹出框存在(alert_is_present)
- Free Pascal初次体验(有亮点哦)
- HDU 1312 Red and Black(DFS,板子题,详解,零基础教你代码实现DFS)
- Selenium2+python自动化48-登录方法(参数化)
- 51Nod 1003 阶乘后面0的数量(数学,思维题)
- 如何查看某个用户指定时间段的ABAP开发记录
- Selenium2+python自动化49-判断文本(text_to_be_present_in_element)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 【Kubernetes】部署 metrics-server 后无法使用 top 命令
- 使用java计算数组方差和标准差
- jzy3D从入门到弃坑_2 使用jzy3D0.9画2D散点图
- jzy3D从入门到弃坑_3 使用jzy3D0.9画2D散点图--多条线条
- maven安装和应用
- 论文研读-多目标自适应memetic算法
- 一起来学matlab-matlab学习笔记13函数 13_1 函数返回值
- 一起来学matlab-matlab学习笔记13函数 13_2 匿名函数
- 一起来学matlab-matlab学习笔记13函数 13_3 创建函数句柄
- matlab 单元数组和元胞数组
- matlab串联结构体,按属性创建含有元胞数组的结构体
- 一起来学matlab-matlab学习笔记6 性能剖析
- 一起来学matlab-matlab学习笔记5 低级文件输入输出函数
- 一起来学matlab-matlab学习笔记4 数据导入和导出_3 导入和导出电子数据表
- 数据导入和导出_1 MAT文件的保存和读取