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 文件重命名工具代码
Jul 26 Python
10种检测Python程序运行时间、CPU和内存占用的方法
Apr 01 Python
Django重装mysql后启动报错:No module named ‘MySQLdb’的解决方法
Apr 22 Python
将Dataframe数据转化为ndarry数据的方法
Jun 28 Python
Python使用装饰器模拟用户登陆验证功能示例
Aug 24 Python
python写入数据到csv或xlsx文件的3种方法
Aug 23 Python
浅析使用Python搭建http服务器
Oct 27 Python
python中的RSA加密与解密实例解析
Nov 18 Python
python3实现往mysql中插入datetime类型的数据
Mar 02 Python
keras K.function获取某层的输出操作
Jun 29 Python
Python 在局部变量域中执行代码
Aug 07 Python
Django数据模型中on_delete使用详解
Nov 30 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
phpadmin如何导入导出大数据文件及php.ini参数修改
2013/02/18 PHP
执行、获取远程代码返回:file_get_contents 超时处理的问题详解
2013/06/25 PHP
PHP加密扩展库Mcrypt安装和实例
2013/11/10 PHP
php简单检测404页面的方法示例
2019/08/23 PHP
PHP二维数组分页2种实现方法解析
2020/07/09 PHP
jQuery学习7 操作JavaScript对象和集合的函数
2010/02/07 Javascript
Jquery 插件学习实例1 插件制作说明与tableUI优化
2010/04/02 Javascript
appendChild() 或 insertBefore()使用与区别介绍
2013/10/11 Javascript
javascript替换已有元素replaceChild()使用介绍
2014/04/03 Javascript
JavaScript原生对象之String对象的属性和方法详解
2015/03/13 Javascript
JS中如何比较两个Json对象是否相等实例代码
2016/07/13 Javascript
jQuery弹出层后禁用底部滚动条(移动端关闭回到原位置)
2016/08/29 Javascript
简洁实用的BootStrap jQuery手风琴插件
2016/08/31 Javascript
jquery把int类型转换成字符串类型的方法
2016/10/07 Javascript
js获取地址栏参数的两种方法
2017/06/27 Javascript
vue引入swiper插件的使用实例
2017/07/19 Javascript
Vue 2.5 Level E 发布了: 新功能特性一览
2017/10/24 Javascript
puppeteer库入门初探
2019/01/09 Javascript
如何基于vue-cli3.0构建功能完善的移动端架子
2019/04/24 Javascript
Vue 实现前端权限控制的示例代码
2019/07/09 Javascript
vue-cli3项目升级到vue-cli4 的方法总结
2020/03/19 Javascript
JQuery插件tablesorter表格排序实现过程解析
2020/05/28 jQuery
[03:04]DOTA2英雄基础教程 影魔
2013/12/11 DOTA
[04:54]DOTA2 2017国际邀请赛:上届冠军WINGS采访短片
2017/08/09 DOTA
[46:58]完美世界DOTA2联赛PWL S3 Forest vs LBZS 第一场 12.17
2020/12/19 DOTA
python调用java模块SmartXLS和jpype修改excel文件的方法
2015/04/28 Python
Python实现将不规范的英文名字首字母大写
2016/11/15 Python
在python中使用requests 模拟浏览器发送请求数据的方法
2018/12/26 Python
使用python快速实现不同机器间文件夹共享方式
2019/12/22 Python
python重要函数eval多种用法解析
2020/01/14 Python
利用OpenCV中对图像数据进行64F和8U转换的方式
2020/06/03 Python
Python threading模块condition原理及运行流程详解
2020/10/05 Python
css3中的calc函数浅析
2018/07/10 HTML / CSS
公司企业表扬信
2014/01/11 职场文书
环保建议书600字
2014/05/14 职场文书
sass 常用备忘案例详解
2021/09/15 HTML / CSS