python全局变量

全局变量不符合参数传递的精神,所以,平时我很少使用,除非定义常量。今天有同事问一个关于全局变量的问题,才发现其中原来还有门道。

程序大致是这样的:

CONSTANT = 0def modifyConstant() :        print CONSTANT        CONSTANT += 1        returnif __name__ == '__main__' :        modifyConstant()        print CONSTANT

登录后复制

运行结果如下:

UnboundLocalError: local variable ‘CONSTANT’ referenced before assignment

看来,全局变量在函数modifyConstant中边成了局部变量,似乎全局变量没有生效?

立即学习“Python免费学习笔记(深入)”;

做点修改:

CONSTANT = 0def modifyConstant() :        print CONSTANT        #CONSTANT += 1        returnif __name__ == '__main__' :        modifyConstant()        print CONSTANT

登录后复制

运行正常,看来函数内部是可以访问全局变量的。

所以,问题就在于,因为在函数内部修改了变量CONSTANT,Python认为CONSTANT是局部变量,而print CONSTANT又在CONSTANT += 1之前,所以当然会发生这种错误。

那么,应该如何在函数内部访问并修改全局变量呢?应该使用关键字global来修饰变量(有点像PHP):

CONSTANT = 0def modifyConstant() :        global CONSTANT        print CONSTANT        CONSTANT += 1        returnif __name__ == '__main__' :        modifyConstant()        print CONSTANT

登录后复制

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2283576.html

(0)
上一篇 2025年2月27日 20:14:45
下一篇 2025年2月23日 18:08:31

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • python 图 自身遍历及弱引用使用

    在【python 标准库】中看到的一段代码,非常有帮助: def all_nodes(self):        yield self        n = self.other        while n and n.name != s…

    编程技术 2025年2月27日
    200
  • python图像文字识别

    最近在想没有一个图片文字识别的工具呢?我想到了ocr,国内比较牛逼的汉王ocr。那借助python能否实现呢?于是我找啊找查啊查有关python在这方面探讨的资料,发现pytesser 这样一个好玩的程序!拿出来分享讨论一下: PyTess…

    编程技术 2025年2月27日
    200
  • 深入理解python函数传参机制

    首先需要申明的一点是,python里是没有像c和c++里那样按值传参的说法的。python中的所有东西都是对象,这也是它的强大之处,它没有基本类型之说。 在python中,类型属于对象,变量是没有类型的,这正是python的语言特性,也是吸…

    编程技术 2025年2月27日
    200
  • Python命名空间实例解析

    python的命名空间是python程序猿必须了解的内容,对python命名空间的学习,将使我们在本质上掌握一些python中的琐碎的规则。 接下来我将分四部分揭示Python命名空间的本质:一、命名空间的定义;二、命名空间的查找顺序;三、…

    编程技术 2025年2月27日
    200
  • python魔术方法详解

    准备工作 为了确保类是新型类,应该把 _metaclass_=type 入到你的模块的最开始。 class NewType(Object):  mor_code_hereclass OldType:  mor_code_here 登录后复制…

    编程技术 2025年2月27日
    200
  • python清空字典的两种方法比较

    python清空字典的两种方法比较 这里说的clear是指清空python中的字典内容,与删除该字典不一样。 例如: d={‘name’:1,’age’:2} 想要清空该字典有两个方法 立即学…

    编程技术 2025年2月27日
    200
  • python异常大总结

    python用异常对象(exception object)来表示异常情况。遇到错误后,会引发异常。如果异常对象并未被处理或捕捉,程序就会用所谓的 回溯(traceback, 一种错误信息)终止执行: >>> 1/0 Tra…

    编程技术 2025年2月27日
    200
  • Python 开发者在迁移到 Go 前需要知道的事情

    这是一篇记录了我们把一大段 python/cython 代码迁移到 go语言经历的(长)博客。如果你希望了解整个故事、背景等所有的内容,请接着读。如果只对 python 开发者进入之前需要知道的东西感兴趣,点击下面的链接: 从 Python…

    编程技术 2025年2月27日
    200
  • python异常处理详解

    本节主要介绍python中异常处理的原理和主要的形式。 1、什么是异常 Python中用异常对象来表示异常情况。程序在运行期间遇到错误后会引发异常。如果异常对象并未被处理或捕获,程序就会回溯终止执行。 2、抛出异常 raise语句,rais…

    编程技术 2025年2月27日
    200
  • python字符串处理函数大总结

    str=’python string function’ 生成字符串变量str=’python string function’ 字符串长度获取:len(str) 例:print &#8216…

    编程技术 2025年2月27日
    200

发表回复

登录后才能评论