python 局部变量改变全局,python改变全局变量

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

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