There's GOT to be a better way!

Earl Eiland eee at nmt.edu
Thu Mar 3 18:51:08 EST 2005


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.




More information about the Python-list mailing list