[Tutor] Question on "import foobar" vs "from foobar import *"

Eric Pavey warpcat at gmail.com
Sun Jan 10 01:23:26 CET 2010


I should add (that as I understand it), when you do a 'from foo import
blah', or 'from foo import *', this is doing a *copy* (effectively) of that
module's attributes into the current namespace.  Doing "import foo" or
"import foo as goo" is keeping a *reference *to the imported module rather
than a copy.

If you use the 'from import' system, changes made to attrs of the imported
module *won't* be seen by any other module that imported it.
If you do just an 'import' on a module (or 'import ... as ...'), then
changes made to attrs on the imported module *will *be seen by othe modules
that import it as well.  I hope that is somewhat clear. ;)

On Sat, Jan 9, 2010 at 8:35 AM, Lowell Tackett <lowelltackett at yahoo.com>wrote:

> If I might offer one small comment...
>
> It seems to me that this argument also goes to a code readability issue;
> ergo, if you choose "from foobar..." as opposed to "import foobar", then
> from that point on you only need employ foobar's methods in your code, and
> they are not alway easily recognizable.  i.e, by importing foobar, you will
> always prefix a method with its' parent module name, which [I think] makes
> the code more understandable.
>
> From the virtual desk of Lowell Tackett
>
>
> --- On *Sat, 1/9/10, Alan Gauld <alan.gauld at btinternet.com>* wrote:
>
>
> From: Alan Gauld <alan.gauld at btinternet.com>
> Subject: Re: [Tutor] Question on "import foobar" vs "from foobar import *"
> To: tutor at python.org
> Date: Saturday, January 9, 2010, 10:21 AM
>
>
>
> "Rob Cherry" <pythontutor at lxrb.com<http://mc/compose?to=pythontutor@lxrb.com>>
> wrote
>
> > Extending on this advice somewhat - is it *ever* correct to "import
> foobar".
>
> Yes, it is *usually* correct to "import foobar" and rarely correct to "from
> foobar".
> The exception being if you only need one or two names from foobar, but
> usually you need a lot more, in which case use import foobar.
>
> To save typing you can give foobar a shorter name:
>
> import foobar as fb
>
> For some reason that convenience feature doesn't get mentioned
> all that often but I use it a lot.
>
> HTH,
>
>
> -- Alan Gauld
> Author of the Learn to Program web site
> http://www.alan-g.me.uk/
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tutor/attachments/20100109/d174a365/attachment.htm>


More information about the Tutor mailing list