There's GOT to be a better way!

Steve Holden steve at holdenweb.com
Thu Mar 3 18:43:36 EST 2005


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.
> 

regards
  Steve
-- 
Meet the Python developers and your c.l.py favorites March 23-25
Come to PyCon DC 2005                      http://www.pycon.org/
Steve Holden                           http://www.holdenweb.com/



More information about the Python-list mailing list