I can load extra code in Python using both from and import. Why does Python provide two ways of doing what looks like a very similar operation, and which is best to use?

Posted by admin (Graham Ellis), 11 January 2006

from loads all or some of the names from a .py file into the current name space.

import loads the names from a .py into their own name space (being the same as the name of the file from which their loaded).

If you use from, you'll overwrite any names that happen to conflict with you current name space, and you'll grow the number of names in that name space - perhaps to the extent that it becomes unmanagable. However, if you use from you save having to add a lot of extra namespace. code.

General advise - use from sparingly, and for things that you need to lead in and refer to many, many times. Use import by default.

Posted by admin (Graham Ellis), 11 January 2006

Just to add - an example ...

Code:

import fred

print fredprint fred.fredprint fred.fred.snibbo

print fred.john()print fred.fred()

is the equivalent of:

Code:

from fred import *

print fredprint fred.snibbo

print john()print fred()

You'll note that the second example is much shorter and easier to read BUT that it would give you a name conflict if you already had objects called john or fred in you main name space.

This page is a thread posted to the opentalk forum
at www.opentalk.org.uk and
archived here for reference. To jump to the archive index please
follow this link.