python什么是全局变量,python定义全局变量

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: