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的*args和**kwargs用法
Nov 01 Python
python pdb调试方法分享
Jan 21 Python
node.js获取参数的常用方法(总结)
May 29 Python
Django中STATIC_ROOT和STATIC_URL及STATICFILES_DIRS浅析
May 08 Python
python一行sql太长折成多行并且有多个参数的方法
Jul 19 Python
Python实现多级目录压缩与解压文件的方法
Sep 01 Python
python 获取页面表格数据存放到csv中的方法
Dec 26 Python
使用django的objects.filter()方法匹配多个关键字的方法
Jul 18 Python
Django 自动生成api接口文档教程
Nov 19 Python
在Python中预先初始化列表内容和长度的实现
Nov 28 Python
Python交互环境下打印和输入函数的实例内容
Feb 16 Python
python标准库OS模块详解
Mar 10 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
比较全的PHP 会话(session 时间设定)使用入门代码
2008/06/05 PHP
Sorting Array Values in PHP(数组排序)
2011/09/15 PHP
Apache下禁止php文件被直接访问的解决方案
2013/04/25 PHP
用mysql_fetch_array()获取当前行数据的方法详解
2013/06/05 PHP
php中current、next与reset函数用法实例
2014/11/17 PHP
php创建session的方法实例详解
2015/01/27 PHP
Javascript的IE和Firefox兼容性汇编
2006/07/01 Javascript
ArrayList类(增强版)
2007/04/04 Javascript
javascript动态改变img的src属性图片不显示的解决方法
2010/10/20 Javascript
JQuery 返回布尔值Is()条件判断方法代码
2012/05/14 Javascript
解决JS浮点数运算出现Bug的方法
2013/03/12 Javascript
分享一个自己写的简单的javascript分页组件
2015/02/15 Javascript
JavaScript判断图片是否已经加载完毕的方法汇总
2016/02/05 Javascript
基于RequireJS和JQuery的模块化编程日常问题解析
2016/04/14 Javascript
用jQuery获取table中行id和td值的实现代码
2016/05/19 Javascript
jQuery操作cookie
2016/08/08 Javascript
AngularJs导出数据到Excel的示例代码
2017/08/11 Javascript
Vue在页面右上角实现可悬浮/隐藏的系统菜单
2018/05/04 Javascript
AngularJS与BootStrap模仿百度分页的示例代码
2018/05/23 Javascript
vue.js层叠轮播效果的实例代码
2018/11/08 Javascript
基于Vue+elementUI实现动态表单的校验功能(根据条件动态切换校验格式)
2019/04/04 Javascript
vue单页应用的内存泄露定位和修复问题小结
2019/08/02 Javascript
es6 for循环中let和var区别详解
2020/01/12 Javascript
在博客园博文中添加自定义右键菜单的方法详解
2020/02/05 Javascript
详解vue beforeEach 死循环问题解决方法
2020/02/25 Javascript
js canvas实现五子棋小游戏
2021/01/22 Javascript
用python的requests第三方模块抓取王者荣耀所有英雄的皮肤实例
2017/12/14 Python
解决PyCharm import torch包失败的问题
2018/10/13 Python
python从内存地址上加载python对象过程详解
2020/01/08 Python
数据库测试通常都包括哪些方面
2015/11/30 面试题
财务部出纳岗位职责
2013/12/22 职场文书
廉政教育心得体会
2014/01/01 职场文书
食品行业求职人的自我评价
2014/01/19 职场文书
优质护理服务演讲稿
2014/05/07 职场文书
应届大学生求职信
2014/07/20 职场文书
Python中的pprint模块
2021/11/27 Python