15.1 Why Use Modules?
Modules provide an easy way to organize components into a system, by
serving as packages of names. From an abstract perspective, modules
have at least three roles:
- Code reuse
-
As we saw in Chapter 3, modules let us save
code
in files permanently. Unlike code you type at the Python interactive
prompt, which goes away when you exit Python, code in module files is
persistent—it can be reloaded and rerun as many times as
needed. More to the point, modules are a place to define names, or
attributes, that may be referenced by external clients.
- System namespace partitioning
-
Modules are also the highest-level program organization unit in
Python. Fundamentally, they are just packages of names. Modules seal
up names into self-contained packages that avoid name
clashes—you can never see a name in another file, unless you
explicitly import it. In fact, everything
"lives" in a module: code you
execute and objects you create are always implicitly enclosed by a
module. Because of that, modules are a natural tool for grouping
system components.
- Implementing shared services or data
-
From a functional perspective, modules also come in handy for
implementing components that are shared across a system, and hence
only require a single copy. For instance, if you need to provide a
global object that's used by more than one function
or file, you can code it in a module that's imported
by many clients.
To truly understand the role of modules in a Python system, though,
we need to digress for a moment and explore the general structure of
a Python program.
|