Nothing, if the module is already imported, it does not load again.
You simply get a link to a module that has already been imported (it will be obtained from sys.modules ).
To get a list of already imported modules, you can find sys.modules.keys() (note that urllib imports a lot of other modules here):
>>> import sys >>> print len(sys.modules.keys()) 44 >>> print sys.modules.keys() ['copy_reg', 'sre_compile', '_sre', 'encodings', 'site', '__builtin__', 'sysconfig', '__main__', 'encodings.encodings', 'abc', 'posixpath', '_weakrefset', 'errno', 'encodings.codecs', 'sre_constants', 're', '_abcoll', 'types', '_codecs', 'encodings.__builtin__', '_warnings', 'genericpath', 'stat', 'zipimport', '_sysconfigdata', 'warnings', 'UserDict', 'encodings.utf_8', 'sys', 'virtualenvwrapper', '_osx_support', 'codecs', 'readline', 'os.path', 'sitecustomize', 'signal', 'traceback', 'linecache', 'posix', 'encodings.aliases', 'exceptions', 'sre_parse', 'os', '_weakref'] >>> import urllib >>> print len(sys.modules.keys()) 70 >>> print sys.modules.keys() ['cStringIO', 'heapq', 'base64', 'copy_reg', 'sre_compile', '_collections', '_sre', 'functools', 'encodings', 'site', '__builtin__', 'sysconfig', 'thread', '_ssl', '__main__', 'operator', 'encodings.encodings', '_heapq', 'abc', 'posixpath', '_weakrefset', 'errno', '_socket', 'binascii', 'encodings.codecs', 'urllib', 'sre_constants', 're', '_abcoll', 'collections', 'types', '_codecs', 'encodings.__builtin__', '_struct', '_warnings', '_scproxy', 'genericpath', 'stat', 'zipimport', '_sysconfigdata', 'string', 'warnings', 'UserDict', 'struct', 'encodings.utf_8', 'textwrap', 'sys', 'ssl', 'virtualenvwrapper', '_osx_support', 'codecs', 'readline', 'os.path', 'strop', '_functools', 'sitecustomize', 'socket', 'keyword', 'signal', 'traceback', 'urlparse', 'linecache', 'itertools', 'posix', 'encodings.aliases', 'time', 'exceptions', 'sre_parse', 'os', '_weakref'] >>> import urllib
Give him a whirlwind:
import sys >>> sys.modules["foo"] = "bar" # Let pretend we imported a module named "foo", which is a string. >>> print __import__("foo") bar # Not a module, that my string!
As you can see, if the module is not found by sys.modules , you just get a new link to it. What is it.
Please note that this means that the modules must be designed so as not to have any side effects (such as printed materials) when they are imported .
Rebooting modules outside an interactive session is usually not a very good practice (although it does have its own use cases). Other answers detail how you do it.