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