定义三个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 t1 import t2 gl_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_2 if __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 源代码:
t1.py执行的结果:import g1 import t2 def t1_change_g1(): g1.gl_1 = '111' g1.gl_2 = '222' def t1_print_g1(): print g1.gl_1, g1.gl_2 if __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()
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 源代码:
t2.py执行的结果:import t1 import g1 def t2_change_g1(): g1.gl_1 = '333' g1.gl_2 = '444' def t2_print_g1(): print g1.gl_1, g1.gl_2 if __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()
000 000
000 000
000 000
==========
333 444
333 444
333 444
==========
111 222
111 222
111 222
==========
555 666
555 666
555 666