There's GOT to be a better way!

Earl Eiland eee at nmt.edu
Thu Mar 3 17:54:08 EST 2005


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():
		test = 1
		for x in range(10): B()
 	
	def B():
		test = test + 1


main.py
	import module
	module.A()


This will fail, unless test is passed and returned.




More information about the Python-list mailing list