Neal Becker wrote: > Suppose I have a main program, e.g., A.py. In A.py we have: > > X = 2 > import B > > Now B is a module B.py. In B, how can we access the value of X? > > Without trying in any way to dodge the question, why do you want to do that?
There's a property of software called "coupling" that's used to describe the way that communications take place between different components of a piece of software. Ideally modules should be loosely-coupled, which is usually achieved by passing values in as function or method arguments and receiving the results as the return values of said functions or methods. When a module is loosely-coupled in this way it's possible to revise the structure of one component completely (while maintaining the same interface specification) without affecting any other component. By introducing some magic "load a variable from the namespace of the importing module" you make your modules tightly-coupled, which is very bad for maintainability: what happens if you now import B.py into a module that doesn't create an X in its namespace? The fact that you ask the question implies that you really need to think a little harder about the structure of your program. If you tell us the *real* problem (back to my "why do you want to do that" question ...) perhaps we can suggest a better-structured solution. regards Steve PS: If A is the main program (the module that you have run) then you should be able to access it as __main__.X, but you'd be *very naughty* to do so :-) -- Steve Holden +44 150 684 7255 +1 800 494 3119 Holden Web LLC www.holdenweb.com PyCon TX 2006 www.python.org/pycon/ -- http://mail.python.org/mailman/listinfo/python-list