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中装饰器的用法
Apr 27 Python
Linux 发邮件磁盘空间监控(python)
Apr 23 Python
Python利用IPython提高开发效率
Aug 10 Python
Python如何判断数独是否合法
Sep 08 Python
Python中字典的setdefault()方法教程
Feb 07 Python
Python实现可获取网易页面所有文本信息的网易网络爬虫功能示例
Jan 15 Python
简述Python2与Python3的不同点
Jan 21 Python
tensorflow saver 保存和恢复指定 tensor的实例讲解
Jul 26 Python
python实现剪切功能
Jan 23 Python
python 列表中[ ]中冒号‘:’的作用
Apr 30 Python
用python给自己做一款小说阅读器过程详解
Jul 11 Python
移除Selenium中window.navigator.webdriver值
Jun 10 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
ThinkPHP实现动态包含文件的方法
2014/11/29 PHP
PHP编程中尝试程序并发的几种方式总结
2016/03/21 PHP
PHP函数import_request_variables()用法分析
2016/04/02 PHP
PHP程序员学习使用Swoole的理由
2018/06/24 PHP
laravel框架如何设置公共头和公共尾
2019/10/22 PHP
php的无刷新操作实现方法分析
2020/02/28 PHP
js获取RadioButtonList的Value/Text及选中值等信息实现代码
2013/03/05 Javascript
jQuery文本框(input textare)事件绑定方法教程
2013/04/24 Javascript
兼容各大浏览器的JavaScript阻止事件冒泡代码
2015/07/09 Javascript
Nodejs的express使用教程
2015/11/23 NodeJs
深入理解JS中的substr和substring
2016/04/26 Javascript
深入理解JavaScript中的块级作用域、私有变量与模块模式
2016/10/31 Javascript
js格式化时间的简单实例
2016/11/27 Javascript
jQuery实现鼠标滑过图片移动特效
2016/12/08 Javascript
js Date()日期函数浏览器兼容问题解决方法
2017/09/12 Javascript
微信小程序JS加载esmap地图的实例详解
2019/09/04 Javascript
用VsCode编辑TypeScript的实现方法
2020/05/07 Javascript
uin-app+mockjs实现本地数据模拟
2020/08/26 Javascript
[48:39]Ti4主赛事胜者组第一天 EG vs NEWBEE 2
2014/07/19 DOTA
完美解决Python2操作中文名文件乱码的问题
2017/01/04 Python
利用Python如何实现数据驱动的接口自动化测试
2018/05/11 Python
python爬取足球直播吧五大联赛积分榜
2018/06/13 Python
在双python下设置python3为默认的方法
2018/10/31 Python
对Python中TKinter模块中的Label组件实例详解
2019/06/14 Python
Python实现Canny及Hough算法代码实例解析
2020/08/06 Python
python实现excel公式格式化的示例代码
2020/12/23 Python
详解Sticky Footer 绝对底部的两种套路
2017/11/03 HTML / CSS
使用html2canvas实现浏览器截图的示例代码
2018/01/26 HTML / CSS
HTML5新增的表单元素和属性实例解析
2014/07/07 HTML / CSS
韩国家庭购物网上商店:Nsmall
2017/05/07 全球购物
世界上最大的售后摩托车零配件超市:J&P Cycles
2017/12/08 全球购物
如何删除一个表里面的重复行
2013/07/13 面试题
程序员求职信
2014/04/16 职场文书
党的群众路线教育实践活动总结报告
2014/04/28 职场文书
新教师培训方案
2014/06/08 职场文书
机关党员进社区活动总结
2014/07/05 职场文书