Python中全局变量的使用

Python中全局变量的使用,python,global-variables,Python,Global Variables,为什么在函数中使用global时变量值不变 我错过什么了吗 class testglobal(): a=2 print(a) def change(): global a a = 5 change() print(a) 第一:如果你的变量在一个类中,它不是一个全局变量。 您必须在任何函数/方法/类之外声明它。 第二:你们班级的身份是错误的。在一个类中,从4个空格或一个制表符开始。要获得声明的输出,代码

为什么在函数中使用
global
时变量值不变

我错过什么了吗

class testglobal():
    a=2
    print(a)

    def change():

        global a        
        a = 5

    change()
    print(a)

第一:如果你的变量在一个类中,它不是一个全局变量。 您必须在任何函数/方法/类之外声明它。

第二:你们班级的身份是错误的。在一个类中,从4个空格或一个制表符开始。

要获得声明的输出,代码必须缩进如下:

class testGlobal:

    a=2
    print(a)

    def change():

        global a        
        a = 5

    change()
    print(a)
定义类时执行两个
print
语句,此时对
a
的两个引用都引用类变量
a
,而不是
change
引用的
全局
变量
a


如果你真的对全局变量感兴趣,你根本不需要这个类。请尝试以下代码:

a = 2
print(a)
def change():
    global a
    a = 5
change()
print(a)

您能更正缩进吗
类testGlobal:
用于什么?这不需要在类中,Python不是Java。这个问题不需要外部类…但是,在定义了类之后,初始的
a
不是全局变量,它是一个类属性。尽管由于
change
没有用
@staticmethod
修饰,也没有参数,它只能在
testGlobal
外部有效定义,因此它确实创建了一个全局变量(并且
testGlobal
与调用
更改
完全无关)。感谢您指出错误。我希望输出为25。那么我如何改变函数中类变量的值呢?通常,你只在类函数中定义函数;你不给他们打电话。使用此代码,您不能;您必须在
change
的定义中使用
testGlobal.a
,除非调用
change
testGlobal
还不存在。