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对Csv文件操作实例代码
May 12 Python
python使用tornado实现简单爬虫
Jul 28 Python
Python面向对象程序设计构造函数和析构函数用法分析
Apr 12 Python
python定时复制远程文件夹中所有文件
Apr 30 Python
如何通过Python实现标签云算法
Jul 02 Python
详解Python 4.0 预计推出的新功能
Jul 26 Python
Python generator生成器和yield表达式详解
Aug 08 Python
python datetime中strptime用法详解
Aug 29 Python
Python socket实现的文件下载器功能示例
Nov 15 Python
python从zip中删除指定后缀文件(推荐)
Dec 05 Python
python Cartopy的基础使用详解
Nov 01 Python
python3 googletrans超时报错问题及翻译工具优化方案 附源码
Dec 23 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
当年上海收录机产品生产,进口和价格情况
2021/03/04 无线电
9个PHP开发常用功能函数小结
2011/07/15 PHP
php获取ajax的headers方法与内容实例
2017/12/27 PHP
THREE.JS入门教程(3)着色器-下
2013/01/24 Javascript
浅析js封装和作用域
2013/07/09 Javascript
JavaScript数据类型详解
2015/04/01 Javascript
JavaScript实现的encode64加密算法实例分析
2015/04/15 Javascript
详解JavaScript基于面向对象之继承
2015/12/13 Javascript
AngularJS directive返回对象属性详解
2016/03/28 Javascript
jQuery实现区域打印功能代码详解
2016/06/17 Javascript
Three.js学习之文字形状及自定义形状
2016/08/01 Javascript
React组件的三种写法总结
2017/01/12 Javascript
用nodejs搭建websocket服务器
2017/01/23 NodeJs
jQuery序列化后的表单值转换成Json
2017/06/16 jQuery
基于node.js制作简单爬虫教程
2017/06/29 Javascript
Vue项目中使用better-scroll实现一个轮播图自动播放功能
2018/12/03 Javascript
layui关闭层级、简单监听的实例
2019/09/06 Javascript
微信小程序批量上传图片到七牛(推荐)
2019/12/19 Javascript
python迭代器的使用方法实例
2013/11/21 Python
python检测是文件还是目录的方法
2015/07/03 Python
python单例模式的多种实现方法
2019/07/26 Python
python RC4加密操作示例【测试可用】
2019/09/26 Python
Python函数参数类型及排序原理总结
2019/12/19 Python
Python编程快速上手——PDF文件操作案例分析
2020/02/28 Python
Python Pandas 对列/行进行选择,增加,删除操作
2020/05/17 Python
pycharm sciview的图片另存为操作
2020/06/01 Python
Python自动巡检H3C交换机实现过程解析
2020/08/14 Python
只要五步 就可以用HTML5/CSS3快速制作便签贴特效(图)
2012/06/04 HTML / CSS
英国度假别墅预订:Sykes Cottages
2017/06/12 全球购物
加拿大快时尚零售商:Ardene
2018/02/14 全球购物
高校毕业生登记表自我鉴定
2013/11/03 职场文书
大三学习计划书范文
2014/05/02 职场文书
安全负责人任命书
2014/06/06 职场文书
慈善募捐倡议书
2015/04/27 职场文书
2015年超市员工工作总结
2015/05/04 职场文书
Python OpenCV之常用滤波器使用详解
2022/04/07 Python