`
crazier9527
  • 浏览: 1013839 次
  • 性别: 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编程语言中,了解和正确使用局部变量与全局变量是非常重要的基础知识。它们的主要区别在于作用域和可访问性。 **局部变量(Local Variables)**: 局部变量是在函数内部定义的,只在该函数的代码块中有效。...

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

    #### Python全局变量的概念与作用 在Python编程语言中,全局变量是指在整个程序范围内都可访问的变量。这意味着无论函数或类如何嵌套,只要没有同名的局部变量存在,都可以直接访问全局变量。全局变量通常用于存储...

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

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

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

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

    python中的全局变量用法分析

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

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

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

    Python 全局变量与局部变量

    Python中的全局变量与局部变量是编程中非常基础但至关重要的概念。它们决定了变量的作用范围和生命周期,对于理解和编写有效的Python代码至关重要。 首先,我们要明确什么是全局变量和局部变量。全局变量是在程序的...

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

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

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

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

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

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

    Python全局变量用法实例分析

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

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

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

    python自学教程-19-修改全局变量.ev4.rar

    在这个"python自学教程-19-修改全局变量"的课程中,我们将深入探讨Python中的变量类型,特别是如何在函数内部修改全局变量。 首先,变量是程序中存储数据的容器。在Python中,有多种类型的变量,如整型(int)、...

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

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

    从局部变量和全局变量开始全面解析Python中变量的作用域

    在Python中,变量主要分为两种类型:局部变量(local variables)和全局变量(global variables)。 1. **局部变量**:在函数内部定义的变量被称为局部变量,它们只在该函数的范围内有效。当函数执行完毕,局部变量...

    python中变量作用域及嵌套作用域.pdf

    变量搜索路径是:本地变量->全局变量,Python 会按照这个顺序来查找变量。如果找不到变量,将抛出异常。 在 Python 中,变量的作用域跟 Java 的作用域概念有一些不同。在 Python 中,变量的作用域是由文本决定的,...

    Python全局变量操作详解

    Python全局变量操作是Python编程中一个基础而重要的知识点,它涉及到变量的作用域、模块化编程以及代码的可维护性等多个方面。本文将详细介绍在Python中如何操作和使用全局变量,并总结了两种常见的使用全局变量的...

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

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

    Python教程之全局变量用法

    全局变量在Python编程中是一种可以在程序的任何地方访问的变量,不受作用域限制。它们在整个程序的生命周期内都保持其值,除非被显式地修改。然而,全局变量的使用需要谨慎,因为它们可能造成代码的复杂性和难以调试...

Global site tag (gtag.js) - Google Analytics