when is a != foo.a?

Duncan Booth duncan.booth at invalid.invalid
Mon Aug 28 07:44:29 EDT 2006


Chaz Ginger wrote:

> Can someone explain what is really going on here?

Think of 'from x import y' as an assignment. Roughly equivalent to:

   y = sys.modules['x'].y

(except of course you don't have to have imported sys, and it will load the 
module 'x' if it hasn't already been imported.)

> b.py ----------------------
> 
> from a import foo

In other words:

   foo = a.foo

foo in module b is initialised from a.foo, but it is a separate variable. 
So when a.foo is rebound that doesn't affect b.foo.

> def b(): print foo
> 
> c.py ----------------------
> 
> import a
> from b import b

and here:
   b = b.b

> 
> print 'per a.a() ',a.foo
> a.a(245)
> print 'expect 245 ', a.foo
> b()
> 





More information about the Python-list mailing list