On 17 mayo, 00:05, Patrick Maupin <pmau...@gmail.com> wrote: > On May 16, 4:42 pm, vsoler <vicente.so...@gmail.com> wrote: > > > > > Taken fromwww.python.org, FAQ 2.3 How do I share global variables > > across modules? > > > config.py: > > > x = 0 # Default value of the 'x' configuration setting > > > mod.py: > > > import config > > config.x = 1 > > > main.py: > > > import config # try removing it > > import mod > > print config.x > > > The example, such as shown in the website, works perfectly well. > > However, I don't fully understand why I have to import config in > > main.py, since it has already been imported by mod.py. > > > As the website explains, there is only one module namespace for each > > module, and mod.py has aleady created the config namespace by > > importing it. Why should I import it again in main.py if that > > namespace already exists? > > > If I remove -> import config # try removing it in main.py, > > the application does not run > > > What am I missing? > > What you are missing is that the interpreter has to look *inside* a > namespace in order to actually find the object associated with a > name. As you found out, there is a namespace per module. So > main.py's namespace is where the code in main.py will search for > variables. If 'mod' imports config, then the 'mod' module's namespace > is updated with 'config' -> the config module. But the act of 'mod' > importing 'config' will not alter the namespace of 'main' at all. So > if you want to access variable 'x' inside 'config' from main you can > either import config directly into main and access it as config.x, or > you can import config into mod and import mod into main and access it > as mod.config.x. > > Regards, > Pat
Thank you Pat, it's very clear. However, can I be 100% sure that,no matter how I access variable 'x' (with config.x or mod.config.x) it is always the same 'x'. I mean that either reference of 'x' points to the same id(memory position)? Thank you -- http://mail.python.org/mailman/listinfo/python-list