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 01 Python
Python的ORM框架SQLAlchemy入门教程
Apr 28 Python
python学习基础之循环import及import过程
Apr 22 Python
python调用pyaudio使用麦克风录制wav声音文件的教程
Jun 26 Python
python多进程下实现日志记录按时间分割
Jul 22 Python
python求一个字符串的所有排列的实现方法
Feb 04 Python
tensorflow自定义激活函数实例
Feb 04 Python
浅谈Python中re.match()和re.search()的使用及区别
Apr 14 Python
pandas中的ExcelWriter和ExcelFile的实现方法
Apr 24 Python
Python 如何安装Selenium
May 06 Python
教你如何使用Python开发一个钉钉群应答机器人
Jun 21 Python
python ConfigParser库的使用及遇到的坑
Feb 12 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 将bmp图片转为jpg等其他任意格式的图片
2009/06/29 PHP
浅析PHP substr,mb_substr以及mb_strcut的区别和用法
2013/06/21 PHP
PHP中strtr字符串替换用法详解
2014/11/26 PHP
php微信支付之APP支付方法
2015/03/04 PHP
PHP操作FTP类 (上传、下载、移动、创建等)
2016/03/31 PHP
PHP实现对xml的增删改查操作案例分析
2017/05/19 PHP
PHP实现git部署的方法教程
2017/12/19 PHP
PHP ADODB实现事务处理功能示例
2018/05/25 PHP
PHP利用pdo_odbc实现连接数据库示例【基于ThinkPHP5.1搭建的项目】
2019/05/13 PHP
PHP各种常见经典算法总结【排序、查找、翻转等】
2019/08/05 PHP
扩展easyui.datagrid,添加数据loading遮罩效果代码
2010/11/02 Javascript
使用coffeescript编写node.js项目的方法汇总
2015/08/05 Javascript
JavaScript、jQuery与Ajax的关系
2016/01/24 Javascript
javascript将中国数字格式转换成欧式数字格式的简单实例
2016/08/02 Javascript
js实现倒计时及时间对象
2016/11/15 Javascript
jQuery实现checkbox列表的全选、反选功能
2016/11/24 Javascript
JS中静态页面实现微信分享功能
2017/02/06 Javascript
Vue+Vux项目实践完整代码
2017/11/30 Javascript
Node.js搭建WEB服务器的示例代码
2018/08/15 Javascript
实现一个 Vue 吸顶锚点组件方法
2019/07/10 Javascript
小程序实现横向滑动日历效果
2019/10/21 Javascript
浅谈webpack和webpack-cli模块源码分析
2020/01/19 Javascript
vue video和vue-video-player实现视频铺满教程
2020/10/30 Javascript
Python删除指定目录下过期文件的2个脚本分享
2014/04/10 Python
谈一谈基于python的面向对象编程基础
2019/05/21 Python
Golang GBK转UTF-8的例子
2019/08/26 Python
使用python3 实现插入数据到mysql
2020/03/02 Python
python中requests模拟登录的三种方式(携带cookie/session进行请求网站)
2020/11/17 Python
英国假发网站:Hothair
2018/02/23 全球购物
时尚圣经:The Fashion Bible
2019/03/03 全球购物
印度尼西亚最完整和最大的在线药房网站:Farmaku.com
2019/11/23 全球购物
三维科技面试题
2013/07/27 面试题
财务副总经理工作职责
2013/11/25 职场文书
赞助商致辞
2015/07/30 职场文书
小学生一年级(书信作文)
2019/08/13 职场文书
javascript函数式编程基础
2021/09/15 Javascript