Module-loading operations rely on attributes of the built-in
sys module (covered in The sys Module). The module-loading process described in this section is carried out by built-in function
_ _import_ _. Your code can call
_ _import_ _ directly, with the module name string as an argument.
_ _import_ _ returns the module object or raises
ImportError if the import fails.
To import a module named
_ _import_ _ first checks dictionary
sys.modules, using string
M as the key. When key
M is in the dictionary,
_ _import_ _ returns the corresponding value as the requested module object. Otherwise,
_ _import_ _ binds
] to a new empty module object with a
_ _name_ _ of
M, then looks for the right way to initialize (load) the module, as covered in Searching the Filesystem for a Module.
Thanks to this mechanism, the relatively slow loading operation takes place only the first time a module is imported in a given run of the program. When a module is imported again, the module is not reloaded, since
_ _import_ _ rapidly finds and returns the module’s entry in
sys.modules. Thus, all imports of a given module after the first one are very fast: they’re just dictionary lookups. (To force a reload, see The reload Function.)
When a module is loaded,
_ _import_ _ first checks whether the module is built-in. Built-in modules are listed in tuple
sys.builtin_module_names, but rebinding that tuple does not affect module loading. When Python loads a built-in module, ...