There's GOT to be a better way!
Earl Eiland
eee at nmt-dot-edu.no-spam.invalid
Sat Apr 9 15:22:30 EDT 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