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