Previous Page
Next Page


The Python programming language manages to reconcile many apparent contradictions: it's both elegant and pragmatic, it's both simple and powerful, it's very high-level yet doesn't get in your way when you need to fiddle with bits and bytes, it's suitable for programming novices and great for experts, too.

This book is aimed at programmers with some previous exposure to Python, as well as experienced programmers coming to Python for the first time from other programming languages. The book is a quick reference to Python itself, the most commonly used parts of its vast standard library, and some of the most popular and useful third-party modules and packages, covering a wide range of application areas, including web and network programming, GUIs, XML handling, database interactions, and high-speed numeric computing. The book focuses on Python's cross-platform capabilities and covers the basics of extending Python and embedding it in other applications, using either C or Java™.

How This Book Is Organized

This book has five parts, as follows.

Part I, Getting Started with Python

Chapter 1, Introduction to Python

Covers the general characteristics of the Python language and its implementations, and discusses where to get help and information.

Chapter 2, Installation

Explains how to obtain and install Python on your computer(s).

Chapter 3, The Python Interpreter

Covers the Python interpreter program, its command-line options, and how it is used to run Python programs and in interactive sessions. The chapter also mentions text editors that are particularly suitable for editing Python programs and auxiliary programs for thoroughly checking your Python sources, and examines some full-fledged integrated development environments, including IDLE, which comes free with standard Python.

Part II, Core Python Language and Built-ins

Chapter 4, The Python Language

Covers Python syntax, built-in data types, expressions, statements, and how to write and call functions.

Chapter 5, Object-Oriented Python

Explains object-oriented programming in Python.

Chapter 6, Exceptions

Covers how to deal with errors and abnormal conditions in Python programs.

Chapter 7, Modules

Covers how Python lets you group code into modules and packages, how to define and import modules, and how to install third-party Python extensions that are packaged in standard Python ways.

Chapter 8, Core Built-ins

Refers to built-in data types and functions, and some of the most fundamental modules in the standard Python library (roughly, modules supplying functionality that, in some other languages, is built into the language itself).

Chapter 9, Strings and Regular Expressions

Covers Python's powerful string-processing facilities, including Unicode strings and regular expressions.

Part III, Python Library and Extension Modules

Chapter 10, File and Text Operations

Explains how to deal with files and text processing using built-in Python file objects, many modules from Python's standard library, and platform-specific extensions for rich text I/O. The chapter also covers issues of internationalization and localization, and the specific task of defining interactive textmode command sessions with Python.

Chapter 11, Persistence and Databases

Introduces Python's serialization and persistence mechanisms, as well as Python's interfaces to DBM databases, the Berkeley Database, and relational (SQL-based) databases.

Chapter 12, Time Operations

Covers how to deal with times and dates in Python, using the standard library and popular extensions.

Chapter 13, Controlling Execution

Explains how to achieve advanced execution control in Python, including execution of dynamically generated code and control of garbage-collection operations. The chapter also covers some Python internal types, and the specific issue of registering "clean-up" functions to be executed at programtermination time.

Chapter 14, Threads and Processes

Covers Python's functionality for concurrent execution, both via multiple threads running within one process and via multiple processes running on a single machine. The chapter also covers how to access the process's environment, and how to access files via memory-mapping mechanisms.

Chapter 15, Numeric Processing

Shows Python's features for numeric computations, both in standard library modules and in third-party extension packages; in particular, the chapter covers how to use decimal floating-point numbers instead of the default binary floating-point numbers. The chapter also covers how to get and use pseudorandom and truly random numbers.

Chapter 16, Array Processing

Covers built-in and extension packages for array handling, focusing on the traditional Numeric third-party extension, and mentions other, more recently developed alternatives.

Chapter 17, Tkinter GUIs

Explains how to develop graphical user interfaces in Python with the Tkinter package included with the standard Python distribution, and briefly mentions other alternative Python GUI frameworks.

Chapter 18, Testing, Debugging, and Optimizing

Deals with Python tools and approaches that help ensure your programs are correct (i.e., that your programs do what they're meant to do), find and correct errors in your programs, and check and enhance your programs' performance. The chapter also covers the concept of "warning" and the Python library module that deals with it.

Part IV, Network and Web Programming

Chapter 19, Client-Side Network Protocol Modules

Covers many modules in Python's standard library that help you write network client programs, particularly by dealing with various network protocols from the client side and handling URLs.

Chapter 20, Sockets and Server-Side Network Protocol Modules

Explains Python's interfaces to low-level network mechanisms (sockets), standard Python library modules that help you write network server programs, and asynchronous (event-driven) network programming with standard modules and the powerful Twisted extension.

Chapter 21, CGI Scripting and Alternatives

Covers the basics of CGI programming, how to perform CGI programming in Python with standard Python library modules, and how use "cookies" to deal with session-state in HTTP server-side programming. The chapter also mentions many alternatives to CGI programming for server-side web programming through popular Python extensions.

Chapter 22, MIME and Network Encodings

Shows how to process email and other network-structured and encoded documents in Python.

Chapter 23, Structured Text: HTML

Covers Python library modules that let you process and generate HTML documents.

Chapter 24, Structured Text: XML

Covers Python library modules and popular extensions that let you process, modify, and generate XML documents.

Part V, Extending and Embedding

Chapter 25, Extending and Embedding Classic Python

Shows how to code Python extension modules using C and other classic compiled languages, how to embed Python in applications coded in such languages, and alternative ways to extend Python and access existing C, C++, and Fortran libraries.

Chapter 26, Extending and Embedding Jython

Shows how to use Java classes from the Jython implementation of Python, and how to embed Jython in applications coded in Java.

Chapter 27, Distributing Extensions and Programs

Covers the tools that let you package Python extensions, modules, and applications for distribution.

Conventions Used in This Book

The following conventions are used throughout this book.

Reference Conventions

In the function/method reference entries, when feasible, each optional parameter is shown with a default value using the Python syntax name=value. Built-in functions need not accept named parameters, so parameter names are not significant. Some optional parameters are best explained in terms of their presence or absence, rather than through default values. In such cases, I indicate that a parameter is optional by enclosing it in brackets ([]). When more than one argument is optional, the brackets are nested.

Typographic Conventions


Used for filenames, program names, URLs, and to introduce new terms. Also used for Unix commands and their options.

Constant width

Used for all code examples, as well as for all items that appear in code, including keywords, methods, functions, classes, and modules.

Constant width italic

Used to show text that can be replaced with user-supplied values in code examples.

Constant width bold

Used for commands that must be typed on the command line, and occasionally for emphasis in code examples or to indicate code output.

Using Code Examples

This book is here to help you get your job done. In general, you may use the code in this book in your programs and documentation. You do not need to contact the publisher for permission unless you're reproducing a significant portion of the code. For example, writing a program that uses several chunks of code from this book does not require permission. Selling or distributing a CD-ROM of examples from O'Reilly books does require permission. Answering a question by citing this book and quoting example code does not require permission. Incorporating a significant amount of example code from this book into your product's documentation does require permission.

We appreciate, but do not require, attribution. An attribution usually includes the title, author, publisher, and ISBN. For example: "Python in a Nutshell, Second Edition, by Alex Martelli. Copyright 2006 O'Reilly Media, Inc., 0-596-10046-9."

How to Contact Us

I have tested and verified the information in this book to the best of my ability, but you may find that features have changed (or even that I have made mistakes!). Please let the publisher know about any errors you find, as well as your suggestions for future editions, by writing to:

O'Reilly Media, Inc.

1005 Gravenstein Highway North

Sebastopol, CA 95472

800-928-9938 (in the United States or Canada)

707-829-0515 (international or local)

707-829-0104 (fax)

There is a web page for this book, which lists errata, examples, and any additional information. You can access this page at:

To ask technical questions or comment on the book, send email to:

For more information about books, conferences, resource centers, and the O'Reilly Network, see the O'Reilly web site at:

Safari® Enabled

When you see a Safari® Enabled icon on the cover of your favorite technology book, that means the book is available online through the O'Reilly Network Safari Bookshelf.

Safari offers a solution that's better than e-books: it's a virtual library that lets you easily search thousands of top tech books, cut and paste code samples, download chapters, and find quick answers when you need the most accurate, current information. Try it for free at


My heartfelt thanks to everybody who helped me out on this book, both in the first edition and in its current second edition. Many Python beginners, practitioners, and experts have read drafts of parts of the book and have offered feedback to help me make the book clear, precise, accurate, and readable. Out of all of them, for the quality and quantity of their feedback and other help, I must single out for special thanks my colleagues at Google, especially Neal Norwitz and Mohsin Ahmed.

The first edition received indispensable help from Python experts in specific areas (Aahz on threading, Itamar Shtull-Trauring on Twisted, Mike Orr on Cheetah, Eric Jones and Paul Dubois on Numeric, and Tim Peters on threading, testing, and optimization), a wonderful group of technical reviewers (Fred Drake, Magnus Lie Hetland, Steve Holden, and Sue Giller), and the book's editor, Paula Ferguson. The second edition benefited from the efforts of editors Jonathan Gennick and Mary O'Brien, and technical reviewers Ryan Alexander, Jeffery Collins, and Mary Gardiner. I owe special thanks to the wonderful folks in the O'Reilly Tools Group, who (both directly and personally, and through the helpful tools they developed) helped me through several difficult technical problems.

As always, even though they're back in my native Italy and my career with Google has taken me to California, my thoughts go to my family: my children Flavia and Lucio, my sister Elisabetta, and my father Lanfranco.

But the one, incredible individual to which my heart gushes out in gratitude, and more than gratitude, is my wife, Anna Martelli Ravenscroft, my co-author in the second edition of the Python Cookbook, a fellow Python Software Foundation member, and the harshest, most wonderful technical reviewer any author could possibly dream of. Besides her innumerable direct contributions to this book, Anna managed to create for me, out of thin air, enough peace, quiet, and free time over the last year (despite my wonderful and challenging responsibilities as Uber Tech Lead for Google) to make this book possible. Truly, this is her book at least as much as it is mine.

Previous Page
Next Page