python什么是全局变量,python定义全局变量
在python编程中,一般用global关键字来定义全局变量,但似乎global关键字在涉及多个文件时就有问题了。
例如,如果全局变量在单个文件中定义,请参见下面的代码。
#-*-编码:utf-8-*-#来自data_def导入*
距离=34
class test(object):def _ _ init _ _(self):pass
#更改类中全局变量的值
defchange_1(self):全局距离
距离=90
Print (distance in class:,distance) #输出全局变量的值
def _ value(self):GlobalDistancePrint( distance in class:,distance) #在函数中使用并打印全局变量的值。
def function _ test():globaldistanceprint(函数中的全局值,距离)
距离=234
打印(“函数中的全局值”,距离)
Function_test()#使用并更改函数34-234中的全局变量的值
t=测试()
T.print_value()#打印类234中全局变量的值。
T.change_1() #更改类234-90中全局变量的值
程序运行结果如下:全局变量运行正确。
函数34中的全局值
函数中的全局值234类中的距离:234类中的距离:90
下面的代码拆分成两个文件,data_def.py和main.py,data_def.py定义全局变量distance和class,main.py导入data _ def.py。
data_def.py文件代码如下:
#-*-编码:utf-8 -*-
距离=34
class test(object):def _ _ init _ _(self):pass
#更改类中全局变量的值
defchange_1(self):全局距离
距离=90
Print (distance in class:,distance) #输出全局变量的值
def print _ value(self):globaldistanceprint(类中距离:,距离)
main.py文件代码如下:
#-*-编码:utf-8 -*-
从数据定义导入*
#使用并打印函数中全局变量的值
def function _ test():globaldistanceprint(函数中的全局值,距离)
距离=234
Print(函数中的全局值,distance)print( main中的全局值:,distance) #在main函数中,全局变量是34。
Function_test() #使用并更改函数34-234中的全局变量的值
t=测试()
T.print_value()#打印类中全局变量的值,输出是34而不是234。改变函数中全局变量的值不影响类中全局变量的值。
T.change_1() #更改类中全局变量的值34-90
程序运行结果:
主菜单中的全局值:34
函数34中的全局值
函数中的全局值234 distance in class:34 distance in class:90
两次运行的结果不同。可以发现,当使用global在不同文件之间操作全局变量时,生成的结果与我们预期的不太一样。具体原因不清楚?知道原因的欢迎留言。
因此,可以考虑使用类变量来定义全局变量。有关实现,请参见下面的代码。
第一个文件(data_def.py)定义了两个类,第一个类定义了全局变量distance,第二个类是普通的操作类。
#-*-编码:UTF-8-*-#文件名:data _ def.py #将类变量构造为全局变量,而不是全局变量
classglobal_value():
距离=34
class test(object):def _ _ init _ _(self):pass
#更改类中全局变量的值
defchange_1(自身):
global_value .距离=40
print(distance in class:,global _ value . distance)def change _ 2(self):
global_value.tail_dis=90
Print (distance in class:,global _ value.distance) #输出全局变量的值
def print _ value(self):print( distance in class:,global_value.distance)
第二个文件(main.py)导入第一个文件中定义的类,并执行变量操作。
#-*-编码:utf-8 -*-
从数据定义导入*
#使用并打印函数中全局变量的值
deffunction_test():print(函数中的全局值,global_value.distance)
global_value.distance=234
Print(函数中的全局值,global _ value . distance)Print( main中的全局值:,global _ value.distance) #打印出全局变量的初始值:34
t=测试()
T.change_1()#更改类中全局变量的值:34-40
print(全局主值:,全局值.距离)
T.change_2()#更改类中全局变量的值:40-90
print(全局主值:,全局值.距离)
Function_test()#在自定义函数中使用和更改全局变量的值90-234
Global_value.distance=11 #改变主函数234-11中全局变量的值
T.print_value() #检查类11中已更改的全局变量的值。
程序输出结果如下:
程序执行的输出结果:main中的全局值:34 class中的距离:40
main中的全局值:40distancein class: 40
main中的全局值:40
函数40中的全局值
类中函数234distancein的全局值:11
从输出结果可以看出,使用类变量也可以实现全局变量的定义,并且可以跨文件操作。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。