Import Model
As we’ve seen, qualification is needed only when you use
import to fetch a module as a whole. When you use
the from
statement, you copy names from the
module to the importer, so the imported names are used without
qualifying. Here are a few more details on the import process.
Imports Happen Only Once
One of the most common questions beginners seem to ask when using modules is: why won’t my imports keep working? The first import works fine, but later imports during an interactive session (or in a program) seem to have no effect. They’re not supposed to, and here’s why:
Modules are loaded and run on the first
importorfrom.Running a module’s code creates its top-level names.
Later
importandfromoperations fetch an already loaded module.
Python loads, compiles, and runs code in a module file only on the first import, on purpose; since this is an expensive operation, Python does it just once per process by default. Moreover, since code in a module is usually executed once, you can use it to initialize variables. For example:
%cat simple.pyprint 'hello' spam = 1 # initialize variable %python>>>import simple# first import: loads and runs file's code hello >>>simple.spam# assignment makes an attribute 1 >>>simple.spam = 2# change attribute in module >>> >>>import simple# just fetches already-loaded module >>>simple.spam# code wasn't rerun: attribute unchanged 2
In this example, the print and
= statements run only the first time the module is imported. The second ...