Python教程之全局变量用法


Posted in Python onJune 27, 2016

本文实例讲述了Python全局变量用法。分享给大家供大家参考,具体如下:

全局变量不符合参数传递的精神,所以,平时我很少使用,除非定义常量。今天有同事问一个关于全局变量的问题,才发现其中原来还有门道。

程序大致是这样的:

CONSTANT = 0
def modifyConstant() :
  print CONSTANT
  CONSTANT += 1
  return
if __name__ == '__main__' :
  modifyConstant()
  print CONSTANT

运行结果如下:

UnboundLocalError: local variable 'CONSTANT' referenced before assignment

看来,全局变量在函数modifyConstant中边成了局部变量,似乎全局变量没有生效?

做点修改:

CONSTANT = 0
def modifyConstant() :
  print CONSTANT
  #CONSTANT += 1
  return
if __name__ == '__main__' :
  modifyConstant()
  print CONSTANT

运行正常,看来函数内部是可以访问全局变量的。

所以,问题就在于,因为在函数内部修改了变量CONSTANT,Python认为CONSTANT是局部变量,而print CONSTANT又在CONSTANT += 1之前,所以当然会发生这种错误。

那么,应该如何在函数内部访问并修改全局变量呢?应该使用关键字global来修饰变量(有点像PHP):

CONSTANT = 0
def modifyConstant() :
  global CONSTANT
  print CONSTANT
  CONSTANT += 1
  return
if __name__ == '__main__' :
  modifyConstant()
  print CONSTANT

就这么简单!

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python完成FizzBuzzWhizz问题(拉勾网面试题)示例
May 05 Python
Python函数嵌套实例
Sep 23 Python
python读写json文件的简单实现
Apr 11 Python
Python读写及备份oracle数据库操作示例
May 17 Python
django表单实现下拉框的示例讲解
May 29 Python
基于anaconda下强大的conda命令介绍
Jun 11 Python
Django 中使用流响应处理视频的方法
Jul 20 Python
python使用time、datetime返回工作日列表实例代码
May 09 Python
PyQt5中多线程模块QThread使用方法的实现
Jan 31 Python
python扫描线填充算法详解
Feb 19 Python
PyQt5中QTableWidget如何弹出菜单的示例代码
Feb 23 Python
读取nii或nii.gz文件中的信息即输出图像操作
Jul 01 Python
python设计模式大全
Jun 27 #Python
Python处理JSON时的值报错及编码报错的两则解决实录
Jun 26 #Python
Python使用自带的ConfigParser模块读写ini配置文件
Jun 26 #Python
Python读写txt文本文件的操作方法全解析
Jun 26 #Python
Python实现快速排序算法及去重的快速排序的简单示例
Jun 26 #Python
python结合selenium获取XX省交通违章数据的实现思路及代码
Jun 26 #Python
理解生产者消费者模型及在Python编程中的运用实例
Jun 26 #Python
You might like
PHP 长文章分页函数 带使用方法,不会分割段落,翻页在底部
2009/10/22 PHP
PHP+SQL 注入攻击的技术实现以及预防办法
2010/12/29 PHP
php处理文件的小例子(解压缩,删除目录)
2013/02/03 PHP
PHP单元测试框架PHPUnit用法详解
2019/01/23 PHP
[原创]PHP global全局变量经典应用与注意事项分析【附$GLOBALS用法对比】
2019/07/12 PHP
弹出广告特效(一个IP只弹出一次)的代码
2007/07/27 Javascript
JavaScript 学习笔记二 字符串拼接
2010/03/28 Javascript
一个javascript图片阅览组件
2010/11/09 Javascript
setTimeout的延时为0时多个浏览器的区别
2012/05/23 Javascript
jQuery实现密保互斥问题解决方案
2013/08/16 Javascript
JavaScript中this的使用详解
2013/11/08 Javascript
使用js如何实现全选与全不选
2013/12/30 Javascript
js定时器(执行一次、重复执行)
2014/03/07 Javascript
javascript + jquery实现定时修改文章标题
2014/03/19 Javascript
一段非常简单的js判断浏览器的内核
2014/08/17 Javascript
Node.js 制作实时多人游戏框架
2015/01/08 Javascript
如何使用PHP+jQuery+MySQL实现异步加载ECharts地图数据(附源码下载)
2016/02/23 Javascript
TypeScript学习之强制类型的转换
2016/12/27 Javascript
JavaScript中String对象的方法介绍
2017/01/04 Javascript
React简单介绍
2017/05/24 Javascript
基于vue.js中事件修饰符.self的用法(详解)
2018/02/23 Javascript
jQuery实现碰到边缘反弹的动画效果
2018/02/24 jQuery
使用Angular CLI生成 Angular 5项目教程详解
2018/03/18 Javascript
基于elementUI使用v-model实现经纬度输入的vue组件
2019/05/12 Javascript
Tornado Web服务器多进程启动的2个方法
2014/08/04 Python
使用IDLE的Python shell窗口实例详解
2019/11/19 Python
Python数据可视化:幂律分布实例详解
2019/12/07 Python
PyTorch的SoftMax交叉熵损失和梯度用法
2020/01/15 Python
pytorch梯度剪裁方式
2020/02/04 Python
List, Set, Map是否继承自Collection接口?
2016/05/16 面试题
2014年计生标语
2014/06/23 职场文书
2014年学生会生活部工作总结
2014/11/07 职场文书
淘宝好评语句大全
2014/12/31 职场文书
《乌鸦喝水》教学反思
2016/02/19 职场文书
创业计划书之游泳馆
2019/09/16 职场文书
Netty分布式客户端接入流程初始化源码分析
2022/03/25 Java/Android