Python多模块全局变量引用和修改

来源:互联网 发布:淘宝一元拍卖的玉真假 编辑:程序博客网 时间:2024/06/14 02:42

定义三个py文件: g1.py,  t1.py,  t2.py

其中g1.py定义了两个全局变量,而t1.py和t2.py引用g1.py模块。三个模块文件都具有修改和打印全局变量的方法。


根据以下代码的执行结果,可以得出:原始定义模块中的全局变量,和引用模块中的全局变量应该不在同一个命名空间中。

(1) g1.py为全局变量的原始定义文件。 g1.py中全局变量的值不会受引用他的模块(t1.py和t2.py)的影响。也就是说,g1中调用t1.py和t2.py的函数修改全局变量,

g1.py中全局变量的值不受影响。而g1.py中自身的修改函数会影响自己的变量值。

同时,t1.py和t2.py中全局变量的值,也不会受g1.py的影响。即在g1.py中调用g1的修改函数,不会影响到t1.py和t2.py中全局变量的取值。

(2) t1.py和t2.py 都引用了g1模块。t1.py和t2.py中修改全局变量,在他们之间都是可见的。即t1.py修改了全局变量, t2.py可以感知到。在t2.py修改全局变量的值,

在t1.py中可以感知到。t1.py和t2.py引用的全局变量应该在同一个命令空间中,修改时相互可见。


*********************************************************************************************************************************************

g1.py 源代码:

import t1import t2gl_1 = '000'gl_2 = '000'def change_info():    global gl_1, gl_2    gl_1 = '555'    gl_2 = '666'def print_info():    print gl_1, gl_2if __name__ == '__main__':    t1.t1_print_g1()    t2.t2_print_g1()    print_info()    print "="*10    t2.t2_change_g1()    t1.t1_print_g1()    t2.t2_print_g1()    print_info()    print "="*10    t1.t1_change_g1()    t1.t1_print_g1()    t2.t2_print_g1()    print_info()    print "="*10    change_info()    t1.t1_print_g1()    t2.t2_print_g1()    print_info()

g1.py执行的结果:

000 000
000 000
000 000
==========
333 444
333 444
000 000
==========
111 222
111 222
000 000
==========
111 222
111 222
555 666



*********************************************************************************************************************************************

t1.py 源代码:

import g1import t2def t1_change_g1():    g1.gl_1 = '111'    g1.gl_2 = '222'def t1_print_g1():    print g1.gl_1, g1.gl_2if __name__ == '__main__':    t1_print_g1()    t2.t2_print_g1()    g1.print_info()    print "="*10    t2.t2_change_g1()    t1_print_g1()    t2.t2_print_g1()    g1.print_info()    print "="*10    t1_change_g1()    t1_print_g1()    t2.t2_print_g1()    g1.print_info()    print "="*10    g1.change_info()    t1_print_g1()    t2.t2_print_g1()    g1.print_info()
t1.py执行的结果:

000 000
000 000
000 000
==========
333 444
333 444
333 444
==========
111 222
111 222
111 222
==========
555 666
555 666
555 666



*********************************************************************************************************************************************

t2.py 源代码:

import t1import g1def t2_change_g1():    g1.gl_1 = '333'    g1.gl_2 = '444'def t2_print_g1():    print g1.gl_1, g1.gl_2if __name__ == '__main__':    t1.t1_print_g1()    t2_print_g1()    g1.print_info()    print "="*10    t2_change_g1()    t1.t1_print_g1()    t2_print_g1()    g1.print_info()    print "="*10    t1.t1_change_g1()    t1.t1_print_g1()    t2_print_g1()    g1.print_info()    print "="*10    g1.change_info()    t1.t1_print_g1()    t2_print_g1()    g1.print_info()

t2.py执行的结果:

000 000
000 000
000 000
==========
333 444
333 444
333 444
==========
111 222
111 222
111 222
==========
555 666
555 666
555 666



0 0
原创粉丝点击