当前位置:   article > 正文

python 定义空变量_python程序中用类变量代替global 定义全局变量

python 全局变量 如果为空则生成

020fbdda5476e017e48e462ad9cad38f.gif

在python编程中,一般使用global 关键字来定义全局变量,但是发现 global 关键字在涉及多个文件时,好像存在问题。

比如,单个文件下用global定义使用全局变量的情况 ,看下面的代码

# -*-coding: utf-8 -*-#from data_def import *distance=34class test(object):    def __init__(self):       pass    #在类里面改变全局变量的值    def change_1(self):        global distance        distance=90        print("distance in class:", distance)    #输出全局变量的值    def print_value(self):        global distance        print("distance in class:", distance)#在函数里面使用和打印全局变量的值def function_test():    global distance    print("global value in function", distance)    distance=234    print("global value in function",distance)function_test()  #在函数里面使用和改变全局变量的值 34->234t=test()t.print_value()  #在类里面打印全局变量的值 234t.change_1()   #在类里面改变全局变量的值 234->90

程序运行结果如下:全局变量运行正确

global value in function 34global value in function 234distance in class234distance in class90

下面把上述代码拆分成两个文件,data_def.pymain.pydata_def.py 定义全局变量distance和类 ,main.py导入data_def.py

data_def.py文件代码如下:

#Python学习交流QQ群:778463939distance=34class test(object):    def __init__(self):       pass    #在类里面改变全局变量的值    def change_1(self):        global distance        distance=90        print("distance in class:", distance)    #输出全局变量的值    def print_value(self):        global distance        print("distance in class:", distance)

main.py文件代码如下:

# -*-coding: utf-8 -*-from data_def import *#在函数里面使用和打印全局变量的值def function_test():    global distance    print("global value in function", distance)    distance=234    print("global value in function",distance)print("gloabl value in main:",distance)  #主函数里面,全局变量为34function_test()  #在函数里面使用和改变全局变量的值 34->234t=test()t.print_value()  #在类里面打印全局变量的值 输出为 34 并非是234,函数里面改变全局变量值不影响类里面全局变量的值???t.change_1()   #在类里面改变全局变量的值 34->90

程序运行结果:

gloabl value in main: 34global value in function 34global value in function 234distance in class34distance in class90

两次运行的结果存在出入,可以发现,用global 在不同文件间操作全局变量时,生成的结果和我们想象的不太一样,具体原因还不明确??知道原因的欢迎留言。

为此,可以考虑用类变量来定义全局变量。实现方式看以下代码。

第一个文件(data_def.py)定义两个类,第一个类定义全局变量distance ,第二个类为普通操作类

# -*-coding: utf-8 -*-# Python学习交流QQ群:778463939class global_value():    distance=34class test(object):    def __init__(self):       pass    #在类里面改变全局变量的值    def change_1(self):        global_value.distance=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) 导入第一个文件定义的类,并进行变量操作

# -*-coding: utf-8 -*-from data_def import *#在函数里面使用和打印全局变量的值def function_test():    print("global value in function"global_value.distance)    global_value.distance=234    print("global value in function",global_value.distance)print("global value in main:",global_value.distance)   #打印出全局变量的初始值:34t=test()t.change_1()                                           #在类里面改变全局变量的值:34->40print("global value in main:",global_value.distance)t.change_2()                                           #在类里面改变全局变量的值:40->90print("global value in main:",global_value.distance)function_test()                                        #在自定义函数里面使用和改变全局变量的值 90->234global_value.distance=11                               #在main主函数里面改变全局变量的值 234->11t.print_value()                                        #在类里面查看已经改变的全局变量的值 11

程序执行输出结果:

global value in main: 34distance in class40global value in main: 40distance in class40global value in main: 40global value in function 40global value in function 234distance in class11

从输出结果可以看出,利用类变量的方式也可以实现全局变量的定义,并且可以跨文件操作。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/277897
推荐阅读
相关标签
  

闽ICP备14008679号