On Thu, 2005-03-03 at 16:43, Steve Holden wrote: > Earl Eiland wrote: > On Thu, 2005-03-03 at 15:11, Steve Holden wrote: > > Earl Eiland wrote: > > I'm writing my first program where I call custom modules. The 'global' > command doesn't seem to apply, so how do I change a variable internally > in a module without passing it down n layers, and then back out again? > > > You are correct in assuming that global isn't what you want - it really > means "global to the module namespace in which it appears". > > However, if two separate pieces of code can both reference the same > module then one can set an attribute in the module and the other can > reference it. Don't forget that when you import a module its name > becomes global within the importing module. Since a module is just a > glorified namespace, anything that can reference the module can read > and/or set that module's attributes. > > a.py: > > import something > something.x = "A value" > > b.py: > > import something > print something.x > > will print "A value" as long as a is imported before b. > > Right. That part I figured out. How does one function in an imported > module access a variable in the same module? > > module.py > def A(): > global test > test = 1 > for x in range(10): B() > > def B(): > global test > test = test + 1 > > > main.py > import module > module.A() > print module.test > > > This will fail, unless test is passed and returned. > > I thought I tried that, and it didn't work. I must have made some other mistake.
Thanks. -- http://mail.python.org/mailman/listinfo/python-list