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.sortin 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 in Python.
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 like.
- 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 site, http://www.zopezen.org.
- 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.
- 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 in Python.
See the discussion of Chapter 2 for information about Tim Peters.