The difference is a term called "namespace pollution".
the "from socket import *" will place a whole lot of methods into your
global namespace, possibly colliding with other methods / variables you've
defined yourself.  For example, if your file contained

x = 5
from foobar import *


and foobar contained
x = 6

then x would be 6.  This is a potential side-effect that's pretty
undesirable.  If you did the other import style, then x would not get
overwritten.

The reason the 'from' syntax was designed was so you could only import
certain methods into your global namespace, but you'd be aware of which you
were importing.
So in your example you'd want to do
from socket import gethostbyname

so you're sure you know what you're importing into your namespace and you
can avoid polluting it.

HTH,
-Luke



On Fri, Jan 8, 2010 at 1:21 PM, Rob Cherry <pythontu...@lxrb.com> wrote:

> Still trying to get the hang of some python intricacies, but this one
> has come up a few times.  Beyond the obvious syntactic niceties what
> is the difference between importing with and without the "from"
> syntax?
>
> Its nice for example to do this -
>
> from socket import *
> googleip = gethostbyname("www.google.com")
>
> vs
>
> import socket
> googleip = socket.gethostbyname("www.google.com")
>
> Is there any difference between these concepts?  Is there an easy
> google search term for me to research the difference to death?
>
> Thanks in advance!
>
> Rob
> _______________________________________________
> Tutor maillist  -  Tutor@python.org
> To unsubscribe or change subscription options:
> http://mail.python.org/mailman/listinfo/tutor
>
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to