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
还不存在。