Chapter 24. Advanced Module Topics
This chapter concludes this part of the book with a collection of
more advanced module-related
topics—data hiding, the __future__
module, the __name__
variable,
sys.path
changes, listing tools,
running modules by name string, transitive reloads, and so on—along with
the standard set of gotchas and exercises related to what we’ve covered
in this part of the book.
Along the way, we’ll build some larger and more useful tools than we have so far, that combine functions and modules. Like functions, modules are more effective when their interfaces are well defined, so this chapter also briefly reviews module design concepts, some of which we have explored in prior chapters.
Despite the word “advanced” in this chapter’s title, this is also
something of a grab bag of additional module topics. Because some of the
topics discussed here are widely used (especially the __name__
trick), be sure to take a look before
moving on to classes in the next part of the book.
Data Hiding in Modules
As we’ve seen, a Python module exports all the names assigned at the top level of its file. There is no notion of declaring which names should and shouldn’t be visible outside the module. In fact, there’s no way to prevent a client from changing names inside a module if it wants to.
In Python, data hiding in modules is a convention, not a syntactical constraint. If you want to break a module by trashing its names, you can, but fortunately, I’ve yet to meet a programmer who would. ...
Get Learning Python, 4th Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.