This book has 17 chapters, each of which is devoted to a particular
kind of recipe, such as algorithms, text processing, or databases.
Each chapter contains an introduction, written by an expert in the
field, followed by recipes selected from the online cookbook (or, in
some cases, specially added) and edited to fit the
book's formatting and style requirements. Alex
Martelli did the vast majority of the editing, with some help from
David Ascher. This editing proved to be quite a challenge, as the
original recipes varied widely in their organization and level of
sophistication. Also, with about 200 authors involved, there were
about 200 different "voices" in the
text. We tried to maintain this variety of styles, given the
collaborative nature of this book. However, each recipe was edited,
sometimes considerably, to make it as accessible and useful as
possible, with enough uniformity in structure and presention to
maximize the usability of the book as a whole.
- Chapter 1, Python Shortcuts, introduction by David Ascher
This chapter includes recipes for many common techniques that
don't really fit into any of the other, more
specific recipe categories.
David Ascher is a co-editor of this volume. David's
background spans physics, vision research, scientific visualization,
computer graphics, a variety of programming languages, co-authoring
Learning Python (O'Reilly),
teaching Python, and, these days, a slew of technical and
nontechnical tasks such as architecting developer tools and managing
a team of programmers. David also gets roped into organizing Python
conferences on a regular basis.
- Chapter 2, Searching and Sorting, introduction by Tim Peters
This chapter covers techniques for searching and sorting in Python.
Many of the recipes explore creative uses of
list.sort in conjunction with the
decorate-sort-undecorate (DSU) pattern.
Tim Peters, also known as the
tim-bot, is one of the mythological figures of
the Python world. He is the oracle, channeling Guido van Rossum when
Guido is busy, channeling the IEEE-754 floating-point committee when
anyone asks anything remotely relevant, and appearing conservative
while pushing for a constant evolution in the language. Tim is a
member of the PythonLabs team led by Guido.
- Chapter 3, Text, introduction by Fred L. Drake, Jr.
This chapter contains recipes for manipulating text in a variety of
ways, including combining, filtering, and validating strings, as well
as evaluating Python code inside textual data.
Fred Drake is yet another member of the PythonLabs group, working
with Guido daily on Python development. A father of three, Fred is
best known in the Python community for single-handedly maintaining
the official documentation. Fred is a co-author of Python
& XML (O'Reilly).
- Chapter 4, Files, introduction by Mark Lutz
This chapter presents techniques for working with data in files and
for manipulating files and directories within the filesystem.
Mark Lutz is well known to most Python users as the most prolific
author of Python books, including Programming
Python, Python Pocket Reference, and
Learning Python, which he co-authored with David
Ascher (all from O'Reilly). Mark is also a leading
Python trainer, spreading the Python gospel throughout the world.
- Chapter 5, Object-Oriented Programming, introduction by Alex Martelli
This chapter offers a wide range of recipes that demonstrate the
power of object-oriented programming with Python, from basic
techniques such as overriding methods to advanced implementations of
various design patterns.
Alex Martelli, also known as the
martelli-bot, is a co-editor of this volume.
After almost a decade with IBM Research, then a bit more than that
with think3, Alex now works for AB Strakt, a Swedish Python-centered
firm that develops exciting new technologies for real-time workflow
and groupware applications. He also edits and writes Python articles
and books, including the forthcoming Python in a
Nutshell (O'Reilly) and, occasionally,
research works on the game of contract bridge.
- Chapter 6, Threads, Processes, and Synchronization, introduction by Greg Wilson
This chapter covers a variety of techniques for working with threads
Dr. Greg Wilson is an author of children's books.
Oh, he's also an author of books on parallel
programming, a contributing editor with Doctor
Dobb's Journal, an expert on scientific
computing, and a Canadian. Greg provided a significant boost to the
Python community as coordinator of the Software Carpentry project,
and he currently works for Baltimore Technologies.
- Chapter 7, System Administration, introduction by Donn Cave
This chapter includes recipes for a number of common system
administration tasks, such as generating passwords and interacting
with the Windows registry.
Donn Cave is a Software Engineer at the University of
Washington's central computer site. Over the years,
Donn has proven to be a fount of information on
comp.lang.python on all matters related to
system calls, Unix, system administration, files, signals, and the
- Chapter 8, Databases and Persistence, introduction by Aaron Watters
This chapter presents techniques for interacting with databases and
maintaining persistence in Python.
Aaron Watters was one of the earliest advocates of Python and is an
expert in databases. He's known for having been the
lead author on the first book on Python (Internet
Programming with Python (M&T Books), now out of
print), and he has authored many widely used Python extensions, such
as kjBuckets and kwParsing. Aaron currently works for ReportLab, a
Python-based startup based in England and the U.S.
- Chapter 9, User Interfaces, introduction by Fredrik Lundh
This chapter contains recipes for common GUI tasks and includes
techniques for working with Tkinter, wxPython, GTk, and Qt.
Fredrik Lundh, also known as the eff-bot, is the
CTO of Secret Labs AB, a Swedish Python-focused company providing a
variety of products and technologies, including the PythonWorks Pro
IDE. Fredrik is the world's leading expert on
Tkinter, the most popular GUI toolkit for Python, as well as the main
author of the Python Imaging Library (PIL). He is also the author of
Python Standard Library
(O'Reilly) (a good complement to this volume), which
focuses on the modules in the standard Python library. Finally, he is
a prolific contributor to comp.lang.python,
helping novices and experts alike.
- Chapter 10, Network Programming, introduction by Guido van Rossum
This chapter covers a variety of network programming techniques, from
writing basic TCP clients and servers to manipulating MIME messages.
Guido created Python, nurtured it throughout its infancy, and is
shepherding its growth. Need we say more?
- Chapter 11, Web Programming, introduction by Andy McKay
This chapter presents a variety of web-related recipes, including
ones for CGI scripting, running a Java servlet with Jython, and
accessing the content of web pages.
Andy McKay was ActiveState's web guru and is
currently employed by Merlin Technologies. In the last two years,
Andy went from being a happy Perl user to a fanatical Python and Zope
expert. He is professionally responsible for several very complex and
high-bandwidth Zope sites, and he runs the popular Zope discussion
- Chapter 12, Processing XML, introduction by Paul Prescod
This chapter offers techniques for parsing, processing, and
generating XML using a variety of Python tools.
Paul Prescod is an expert in three technologies: Python, which he
need not justify; XML, which makes sense in a pragmatic world (Paul
is co-author of the XML Handbook, with Charles
Goldfarb, published by Prentice Hall); and Unicode, which somehow
must address some deep-seated desire for pain and confusion that
neither of the other two technologies satisfies. Paul is currently an
independent consultant and trainer, although some Perl folks would
challenge his independence based on his track record as, shall we
say, a fairly vocal Python advocate.
- Chapter 13, Distributed Programming, introduction by Jeremy Hylton
This chapter provides recipes for using Python in simple distributed
systems, including XML-RPC, SOAP, and CORBA.
Jeremy Hylton works for Zope Corporation as a member of the
PythonLabs group. In addition to his new twins,
Jeremy's interests including programming-language
theory, parsers, and the like. As part of his work for CNRI, Jeremy
worked on a variety of distributed systems.
- Chapter 14, Debugging and Testing, introduction by Mark Hammond
This chapter includes a collection of recipes that assist with the
debugging and testing process, from customized error logging to
traceback information to debugging the garbage collection process.
Mark Hammond is best known for his work supporting Python on the
Windows platform. With Greg Stein, he built an incredible library of
modules interfacing Python to a wide variety of APIs, libraries, and
component models such as COM. He is also an expert designer and
builder of developer tools, most notably Pythonwin and Komodo.
Finally, Mark is an expert at debugging even the most messy
systems梔uring Komodo development, for example, Mark was often
called upon to debug problems that spanned three languages (Python,
also co-author of Python Programming on Win32
(O'Reilly), with Andy Robinson.
- Chapter 15, Programs About Programs, introduction by Paul F. Dubois
This chapter contains Python techniques that involve parsing, lexing,
program introspection, and other program-related tasks.
Paul Dubois has been working at the Lawrence Livermore National
Laboratory for many years, building software systems for scientists
working on everything from nuclear simulations to climate modeling.
He has considerable experience with a wide range of scientific
computing problems, as well as experience with language design and
advanced object-oriented programming techniques.
- Chapter 16, Extending and Embedding, introduction by David Beazley
This chapter offers techniques for extending Python and recipes that
assist in the development of extensions.
David Beazley's chief claim to fame is SWIG, an
amazingly powerful hack that lets one quickly wrap C and other
libraries and use them from Python, Tcl, Perl, and myriad other
languages. Behind this seemingly language-neutral tool lies a Python
supporter of the first order, as evidenced by his book,
Python Essential Reference (New Riders). David
Beazley is a fairly sick man (in a good way), leading us to believe
that more scarily useful tools are likely to emerge from his brain.
He's currently inflicting his sense of humor on
computer science students at the University of Chicago.
- Chapter 17, Algorithms, introduction by Tim Peters
This chapter provides a collection of useful algorithms implemented
See the discussion of Chapter 2 for information
about Tim Peters.