`
crazier9527
  • 浏览: 993901 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

就这么简单!

分享到:
评论
3 楼 iasybvm 2009-10-06  
把def modifyConstant() :改为class XXXXX(object): def __init__(self):
2 楼 crazier9527 2009-06-15  
phyeas 写道

在python3里好象有个nonlocal关键字…… http://docs.python.org/3.0/reference/simple_stmts.html#nonlocal

我还停留在2.6。。。一直没去玩3.x,有机会也玩玩
1 楼 phyeas 2009-06-13  
在python3里好象有个nonlocal关键字……

http://docs.python.org/3.0/reference/simple_stmts.html#nonlocal

相关推荐

    Python语言基础:局部变量和全局变量.pptx

    局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。调用函数时,所有在函数内声明的变量名称都将被加入到作用域中。 对于全局变量和局部变量,即使变量名相同,但是因为定义在不同的作用...

    Python 全局变量与局部变量

    本文通过一个案例说明 Python 中全局变量用法与 Java 的不同。(ps:一直在用 Java 的方式用 Python,所以踩了一个坑)觉得无聊可以直接看文末总结。 局部变量与全局变量的概念 以下摘自百度百科: 变量分为局部与...

    Python全局变量-全局变量命名的建议

    Python也可用于可定制化软件中的扩展程序语言。Python丰富的标准库,提供了适用于各个主要系统平台的源码或机器码。 Python还被语言流行指数的编译器Tiobe将它被评为最受欢迎的编程语言,20多年来首次将Python置于...

    python局部变量全局变量-静态方法-实例变量静态变量代码解析

    python局部变量全局变量-静态方法-实例变量静态变量代码解析。

    python中的全局变量用法分析

    Python是一种面向对象的开发语言,在函数中使用全局变量,一般应作全局变量说明,只有在函数内经过说明的全局变量才能使用,这里就来介绍下Python全局变量有关问题。 首先应该说明的是需要尽量避免使用Python全局...

    Python写的多线程共享全局变量(带中文注释)

    Python写的多线程共享全局变量代码,用于学习多线程开发,可以直接运行,并且带中文注释,方便初学者学习使用。

    Python全局变量-global关键字修改全局变量

    Python也可用于可定制化软件中的扩展程序语言。Python丰富的标准库,提供了适用于各个主要系统平台的源码或机器码。 Python还被语言流行指数的编译器Tiobe将它被评为最受欢迎的编程语言,20多年来首次将Python置于...

    Python全局变量用法实例分析

    主要介绍了Python全局变量用法,结合实例形式分析了Python中全局变量的定义、使用方法与相关注意事项,需要的朋友可以参考下

    Python3.5局部变量与全局变量作用域实例分析

    本文实例讲述了Python3.5局部变量与全局变量作用域。分享给大家供大家参考,具体如下: 1、局部变量与全局变量定义: 在子程序(函数)中定义的变量称为:局部变量;在程序顶级(一开始)定义的变量称为:全局变量。...

    python跨文件使用全局变量的实现

    Python 定义了全局变量的特性,使用global 关键字修饰 global key_word 但是他的一大缺陷就是只能本module 中也就是本文件中使用,跳出这个module就不行。 try 1: 使用一个更宏观的思路,全局变量就用全局加载的...

    Python全局变量与局部变量区别及用法分析

    本文实例讲述了Python全局变量与局部变量区别及用法。分享给大家供大家参考,具体如下: 对于很多初学的同学,对全局和局部变量容易混淆,看看下面给大家的讲解相信都应该明白两者的区别了。 定义: 全局变量:在...

    python实现跨文件全局变量的方法

    在使用Python编写的应用的过程中,有时候会遇到多个文件之间传递同一个全局变量的情况。本文就此给出了如下的解决方法供大家参考。 文件1:globalvar.py #!/usr/bin/env python2.7 class GlobalVar: db_handle = ...

    实例讲解Python中global语句下全局变量的值的修改

    global是Python中的一个关键字用来,声明一个局部变量为全局变量,这里我们来以实例讲解Python中global语句下全局变量的值的修改,需要的朋友可以参考下.

    python3.x 全局变量的设定和管理:涉及到“数值变量”、“字符串变量”和“字典变量”

    python3.x 全局变量的设定和管理:涉及到“数值变量”、“字符串变量”和“字典变量”。

    Python教程之全局变量用法

    本文实例讲述了Python全局变量用法。分享给大家供大家参考,具体如下: 全局变量不符合参数传递的精神,所以,平时我很少使用,除非定义常量。今天有同事问一个关于全局变量的问题,才发现其中原来还有门道。 程序...

    解析python的局部变量和全局变量

    局部变量 什么是局部变量 通俗定义:函数内部定义的变量就叫局部变量。 话不多说,代码如下: def test1(): a = 300 # 定义一个局部变量a,并初始化300 print(--test1--修改前:a=%s % a) a = 200 # 给变量a重新...

    基于Python实现全局和局部双变量Moran指数计算

    基于Python实现全局和局部双变量Moran指数计算,输入参数可直接是shapefile文件。

    Python实现全局变量的两个解决方法

    本文针对Python的全局变量实现方法简述如下: 先来看下面一段测试程序: count = 0 def Fuc(count): print count count += 1 for i in range(0, 10): Fuc(count) 运行结果是: >>> 0 0 0 0 0 0 0 0 0 0 很...

Global site tag (gtag.js) - Google Analytics