Python全局变量用法实例分析


Posted in Python onJuly 19, 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写的windows服务不能启动的问题
Apr 15 Python
Cpy和Python的效率对比
Mar 20 Python
Python实现的计数排序算法示例
Nov 29 Python
Python进阶之递归函数的用法及其示例
Jan 31 Python
Python实现将数据写入netCDF4中的方法示例
Aug 30 Python
Python面向对象程序设计OOP深入分析【构造函数,组合类,工具类等】
Jan 05 Python
python中logging模块的一些简单用法的使用
Feb 22 Python
Django中提供的6种缓存方式详解
Aug 05 Python
深入理解Tensorflow中的masking和padding
Feb 24 Python
keras 多任务多loss实例
Jun 22 Python
OpenCV+Python3.5 简易手势识别的实现
Dec 21 Python
详解解决jupyter不能使用pytorch的问题
Feb 18 Python
python对象及面向对象技术详解
Jul 19 #Python
python异常和文件处理机制详解
Jul 19 #Python
python线程、进程和协程详解
Jul 19 #Python
浅谈python字符串方法的简单使用
Jul 18 #Python
python读取oracle函数返回值
Jul 18 #Python
Python读取一个目录下所有目录和文件的方法
Jul 15 #Python
Python在线运行代码助手
Jul 15 #Python
You might like
Window下PHP三种运行方式图文详解
2013/06/11 PHP
php array_map使用自定义的函数处理数组中的每个值
2016/10/26 PHP
Yii2中hasOne、hasMany及多对多关联查询的用法详解
2017/02/15 PHP
PHP使用星号替代用户名手机和邮箱的实现代码
2018/02/07 PHP
Javascript - HTML的request类
2006/07/15 Javascript
初学JavaScript_03(ExtJs Grid的简单使用)
2008/10/02 Javascript
返回对象在当前级别中是第几个元素的实现代码
2011/01/20 Javascript
javascript对下拉列表框(select)的操作实例讲解
2013/11/29 Javascript
jquery滚动加载数据的方法
2015/03/09 Javascript
javascript弹性运动效果简单实现方法
2016/01/08 Javascript
JavaScript通过代码调用Flash显示的方法
2016/02/02 Javascript
EasyUI加载完Html内容样式渲染完成后显示
2016/07/25 Javascript
nodejs微信扫码支付功能实现
2018/02/17 NodeJs
Vue Router的懒加载路径的解决方法
2018/06/21 Javascript
解决Vue+Electron下Vuex的Dispatch没有效果问题
2019/05/20 Javascript
jquery UI实现autocomplete在获取焦点时得到显示列表功能示例
2019/06/04 jQuery
websocket4.0+typescript 实现热更新的方法
2019/08/14 Javascript
解决layer弹出层中表单不起作用的问题
2019/09/09 Javascript
Javascript文本框脚本实现方法解析
2020/10/30 Javascript
python中正则表达式的使用详解
2014/10/17 Python
python分割列表(list)的方法示例
2017/05/07 Python
Python实现发送与接收邮件的方法详解
2018/03/28 Python
解决pycharm的Python console不能调试当前程序的问题
2019/01/20 Python
Python高级特性——详解多维数组切片(Slice)
2019/11/26 Python
python+selenium+Chrome options参数的使用
2020/03/18 Python
python网络编程socket实现服务端、客户端操作详解
2020/03/24 Python
Pycharm激活方法及详细教程(详细且实用)
2020/05/12 Python
python给list排序的简单方法
2020/12/10 Python
scrapy实践之翻页爬取的实现
2021/01/05 Python
纯CSS3实现的8种Loading动画效果
2014/07/05 HTML / CSS
全球虚拟主机商:HostGator
2017/02/06 全球购物
神路信息Java面试题目
2013/03/31 面试题
Overload和Override的区别
2012/09/02 面试题
机修工工作职责
2014/02/21 职场文书
出国留学担保书
2014/05/20 职场文书
【D4DJ】美少女DJ企划 动画将于明年冬季开播第2季
2022/04/11 日漫