O
overly.crazy.steve
I am seeing something strange with execfile. I've simplified the code
to:
########## t.py ##########
print "here"
v = None
def f():
global v
v = 6
if __name__ == "__main__":
f()
print "0:", v
execfile("x.py")
print "0:", v
execfile("y.py")
print "0:", v
########## x.py and y.py (they are identical) ##########
import testexec
print "1:", v, testexec.v
testexec.v = 7
Runing "python t.py" (with Python 2.4.2), the printout I got is:
here
0: 6
here
1: 6 None
0: 6
1: 6 7
0: 6
So there is apparently 2 different instances of v at run time. Can
someone please explain (1) why this is the case, and (2) assuming this
is correct behavior, how I can avoid this? Thanks.
to:
########## t.py ##########
print "here"
v = None
def f():
global v
v = 6
if __name__ == "__main__":
f()
print "0:", v
execfile("x.py")
print "0:", v
execfile("y.py")
print "0:", v
########## x.py and y.py (they are identical) ##########
import testexec
print "1:", v, testexec.v
testexec.v = 7
Runing "python t.py" (with Python 2.4.2), the printout I got is:
here
0: 6
here
1: 6 None
0: 6
1: 6 7
0: 6
So there is apparently 2 different instances of v at run time. Can
someone please explain (1) why this is the case, and (2) assuming this
is correct behavior, how I can avoid this? Thanks.