(This is with Python 2.5.2, on Ubuntu Hardy, if it matters.) This seems so basic that I'm surprised that I didn't find anything about it in the FAQ. (Yes, I am fairly new to Python.)
Here are three tiny files: ==== mut.py ==== import system from system import thing def doit(): print " thing is", thing def do_it_slightly_differently(): print "system.thing is", system.thing ==== system.py ==== thing = "I am the original thing!!" ==== test.py ==== import mut mut.doit() mut.do_it_slightly_differently() import system system.thing = "The new improved thing" mut.doit() mut.do_it_slightly_differently() When I run "python test.py", I see thing is I am the original thing!! system.thing is I am the original thing!! thing is I am the original thing!! system.thing is The new improved thing What surprises me is that the assignment to "system.thing" in test.py only seems to affect the use of "system.thing" in mut.py, and not affect the use of just plain "thing" in that same file. I would have expected my assignment to have affected both, or perhaps neither. I have no idea why these two differ. Can someone explain? -- Rarely do we find men who willingly engage in hard, solid thinking. There is an almost universal quest for easy answers and half-baked solutions. Nothing pains some people more than having to think. -- Martin Luther King, Jr. from "Strength to Love," 1963. -- http://mail.python.org/mailman/listinfo/python-list