python 局部变量改变全局,python改变全局变量
在python编程中,global关键字一般用于定义全局变量,但如果global关键字涉及多个文件,似乎就有问题了。
例如,在global中定义单个文件下全局变量的使用,然后看下面的代码
#-编码:utf-8-# fromdata _ defimport *
距离=34
class test(object):def _ init _(self):pass
#更改类中全局变量的值
DEF _ 1(自身):全局距离
距离=90
Print(distanceinclass:,distance) #输出全局变量值
在ef print _ value(self):globaldistanceprint( distance class:,distance)函数中使用全局变量的值进行打印。
def function _ test():globaldistanceprint( globalvalueinfunction ,distance)).
距离=234
打印(全局值信息),距离)。
Function_test(#(在# function 34-234中使用和更改全局变量的值
t=test())
T.print_value(#打印类234中全局变量的值
T.change_1(#更改类中全局变量的值234-90
程序的执行结果是全局变量已经正确执行。
函数34中的全局值
globalvalueinfunction 234 distance in class 3360234 distance in class 336090
上面的代码拆分成两个文件,data_def.py和main.py,data_def.py定义了全局变量距离和类,main.py导入到data _ def.py中。
data_def.py文件代码如下:
#-*-编码:utf-8-*-
距离=34
class test(object):def _ init _(self):pass
#更改类中全局变量的值
DEF _ 1(自身):全局距离
距离=90
Print(distanceinclass:,distance) #输出全局变量值
def print _ value(self):globaldistanceprint( distance inclass:,distance)).
main.py文件代码如下:
#-*-编码:utf-8-*-
从数据定义导入*
#使用函数中全局变量的值打印
def function _ test():globaldistanceprint( globalvalueinfunction ,distance)).
距离=234
在print(globalvalueinfunction(,distance)print))globalvaluemain:),distance的主函数,全局变量是34。
Function_test(#(在# function 34-234中使用和更改全局变量的值
t=test())
T.print_value(#如果在类中输出全局变量的值,34不是234。改变函数中全局变量的值不会影响类中全局变量的值吗?
T.change_1(#更改类中全局变量的值34-90
程序执行结果:
主菜单中的全局值:34
函数34中的全局值
globalvalueinfunction 234 distance class:34 distance 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 class 3360(,global _ value . distance)def change _ 2)self):
global_value.tail_dis=90
print(distance class 3360(,global_value.distance) #输出全局变量值
ef print _ value(self):print(distance inclass:),global_value.distance).
第二个文件(main.py)读取第一个文件中定义的类,并执行变量操作。
#-*-编码:utf-8-*-
从数据定义导入*
#使用函数中全局变量的值打印
def _ test(:print(globalvalueinfunction),global_value.distance)。
global_value.distance=234
Print (globalvalueinfunction(,global_value.distance) print),globalvalueinmain:),global_value.distance
t=test())
T.change_1(#更改类中全局变量的值:34-40
print(main中的全局值: (,global_value.distance))。
T.change_2(#更改类中全局变量的值:40-90
print(main中的全局值: (,global_value.distance))。
Function_test在自定义函数中使用和更改全局变量的值90-234
在global_value.distance=11#main主函数中更改全局变量234-11的值
T.print_value(#检查类11中已更改的全局变量的值
程序的输出结果如下。
程序执行的输出结果:GlobalValueInMain:34 distance class:40
globalvalueinmain :40距离class :40
主要:40个全局值
函数40中的全局值
globalvalueinfunction 234 distance class:11
从输出结果可以看出,全局变量的定义也可以用类变量来实现,可以在文件之间操作。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。