Chapter 5. Modules

This chapter presents the Python module—the highest-level program organization unit, which packages program code and data for reuse. In concrete terms, modules take the form of Python program files (and C extensions); clients import modules to use the names they define. Modules are processed with two new statements and one important built-in function we explore here:

import

Lets a client fetch a module as a whole

from

Allows clients to fetch particular names from a module

reload

Provides a way to reload a module’s code without stopping Python

We introduced module basics in Chapter 1, and you may have been using module files in the exercises, so some of this chapter may be a review. But we also flesh out module details we’ve omitted so far: reloads, module compilation semantics, and so on. Because modules and classes are really just glorified namespaces, we explore namespace basics here as well, so be sure to read most of this chapter before tackling the next.

Why Use Modules?

Let’s start with the obvious first question: why should we care about modules? The short answer is that they provide an easy way to organize components into a system. But from an abstract perspective, modules have at least three roles:

Code reuse

As we saw in Chapter 1, modules let us save code in files permanently.[34] 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 (called attributes) that may be referenced by external clients.

System namespace partitioning

Modules are also the highest-level program organization unit in Python. As we’ll see, everything “lives” in a module; code you execute and some 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 shared across a system, and hence only require a single copy. For instance, if you need to provide a global data structure that’s used by more than one function, you can code it in a module that’s imported by many clients.



[34] Until you delete the module file, at least.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset