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 序列化 pickle/cPickle模块使用介绍
Nov 30 Python
分析在Python中何种情况下需要使用断言
Apr 01 Python
使用Python编写一个在Linux下实现截图分享的脚本的教程
Apr 24 Python
Python中列表元素转为数字的方法分析
Jun 14 Python
Python实现按特定格式对文件进行读写的方法示例
Nov 30 Python
python多进程提取处理大量文本的关键词方法
Jun 05 Python
Pycharm设置utf-8自动显示方法
Jan 17 Python
Python子类继承父类构造函数详解
Feb 19 Python
python 求定积分和不定积分示例
Nov 20 Python
Python使用QQ邮箱发送邮件实例与QQ邮箱设置详解
Feb 18 Python
Python爬虫之Selenium鼠标事件的实现
Dec 04 Python
在vscode中启动conda虚拟环境的思路详解
Dec 25 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 的几个配置文件函数
2006/12/21 PHP
CodeIgniter模板引擎使用实例
2014/07/15 PHP
thinkphp 字母函数详解T/I/N/D/M/A/R/U
2017/04/03 PHP
php7函数,声明,返回值等新特性介绍
2018/05/25 PHP
node.js中的url.resolve方法使用说明
2014/12/10 Javascript
JavaScript检测弹出窗口是否已经关闭的方法
2015/03/24 Javascript
两种JS实现屏蔽鼠标右键的方法
2020/08/20 Javascript
js实现模拟银行卡账号输入显示效果
2015/11/18 Javascript
简单理解vue中track-by属性
2016/10/26 Javascript
概述jQuery中的ajax方法
2016/12/16 Javascript
原生JS实现导航下拉菜单效果
2020/11/25 Javascript
vue2.0中click点击当前li实现动态切换class
2017/06/21 Javascript
解决Layui 表单提交数据为空的问题
2018/08/15 Javascript
在Vue-cli里应用Vuex的state和mutations方法
2018/09/16 Javascript
inquirer.js一个用户与命令行交互的工具详解
2019/05/18 Javascript
基于js判断浏览器是否支持webGL
2020/04/18 Javascript
JS数组降维的实现Array.prototype.concat.apply([], arr)
2020/04/28 Javascript
vue动态合并单元格并添加小计合计功能示例
2020/11/26 Vue.js
一篇不错的Python入门教程
2007/02/08 Python
python3 实现的人人影视网站自动签到
2016/06/19 Python
使用Python计算玩彩票赢钱概率
2019/06/26 Python
Python3 requests文件下载 期间显示文件信息和下载进度代码实例
2019/08/16 Python
python 字段拆分详解
2019/12/17 Python
浅谈h5自定义audio(问题及解决)
2016/08/19 HTML / CSS
萌新HTML5 入门指南(二)
2020/11/09 HTML / CSS
澳大利亚家具和家居用品购物网站:Zanui
2018/12/29 全球购物
廉价连衣裙和婚纱礼服在线销售:Tbdress
2019/02/28 全球购物
莫斯科隐形眼镜网上商店:Linzi
2019/07/22 全球购物
OSPF有什么优点?为什么OSPF比RIP收敛快?
2013/02/13 面试题
专科应届生求职信
2013/11/24 职场文书
邮政员工辞职信
2014/01/16 职场文书
水电站项目建议书
2014/05/12 职场文书
国博复兴之路观后感
2015/06/02 职场文书
汽车车尾标语大全
2015/08/11 职场文书
工作汇报材料难写?方法都在这里了!
2019/07/01 职场文书
JavaScript+HTML实现学生信息管理系统
2021/04/20 Javascript