__import__ confusion

Steven Taschuk staschuk at telusplanet.net
Tue Feb 25 00:42:29 EST 2003


Quoth Leazen:
> 	I'm having some trouble understanding how __import__ works.
> 	From the docs I read that "from spam.ham import eggs" results in
> "__import__('spam.ham', globals(), locals(), ['eggs'])" rendering the
> later function call 'eggs', what ever that is, but I actually get 'ham'!

I've just read the blurb on __import__ in section 2.1 of the
Library Reference, and I don't see anything to indicate that it
returns the things named in the last argument.  On the contrary:

    When the name variable is of the form package.module, normally,
    the top-level package (the name up till the first dot) is
    returned, not the module named by name. However, when a non-empty
    fromlist argument is given, the module named by name is returned.

The last sentence indicates that __import__('spam.ham', globals(),
locals(), ['eggs']) will return the module named spam.ham, as you
have found.

> [...] So I wonder what the last argument is for since it seams rather
> useless. [...]

Some implementations of __import__ might find it useful -- it
might be possible in some circumstances to optimize the import if
you know precisely which components are needed.

-- 
Steven Taschuk                               staschuk at telusplanet.net
"What I find most baffling about that song is that it was not a hit."
                            -- Tony Dylan Davis (CKUA)





More information about the Python-list mailing list