[January 2011] The new, 4th Edition of this book—an applications tutorial and Python classic—is now available. It was first released in ebook form from O'Reilly on December 15th, 2010, and became more widely available in paper and other forms from retailers on January 5th, 2011.
This edition has been updated substantially for Python best practice and new tools. It uses Python 3.X—version 3.2 specifically, though most of its code should apply to readers using other 2.X and 3.X releases (as of 2017, its major examples have been verified to run on Python 3.6). Despite its new coverage, this edition still serves as a gradual tutorial that teaches how to use Python in common application domains, and a follow-up to Learning Python.
There's more on this book's content and scope below, but for a brief description see the book's early draft Preface preview, as well as the discussion of Python 3.X's implications for this book on the Learning Python notes page. Among other things, the pervasiveness of Unicode in 3.X has broad impacts on both this edition and Python programmers in general.
Programming Python, 4th Edition is available in print, ebook, and online forms from book sellers worldwide, including Amazon and O'Reilly. For purchase options and links, please see the Purchase pointers page. Of note: figures and images in the PDF and other ebooks are all in color this time around—a nice feature for a book with 302 screenshots. FAQ: there are no current plans for a 5th Edition of this book, as noted here and here.
In short, this edition's main parts reflect major application domains:
|The Beginning||A quick first pass over topics to be covered, by example|
|System Programming||Systems programming and administration, parallel processing|
|GUI Programming||In-depth user interface coverage with Python's tkinter toolkit|
|Internet Programming||Networking, client-side and server-side scripting, websites|
|Tools and Techniques||Databases, data structures, text and language, C integration|
|The End||A wrap-up on Python's roles in development at large|
For more details, check out the Preface excerpt, and the complete table of contents in the O'Reilly sampler.
Besides its tutorials, much of this book's meat lies in its example code. Each part includes substantial working examples, including full chapters devoted to larger programs in the Systems, GUIs, and Internet parts. Although smaller and self-contained examples show up too, this book's scope and size allow it to also present more complete projects and programs — the largest of which span multiple chapters and parts, and top out at thousands of lines of code. Among these examples: photo viewers, calculators, email clients, webmail sites, and Unicode-aware text editors serve both to teach full-scale applications work, and to demonstrate Python's utility as a general systems development tool. Fetch the book's examples here, and view some of their screenshots here.
This book retains the applications-programming focus of its prior editions: it's about what you can do with Python after you've learned the core language. It focuses on the libraries, tools, and techniques used in realistic applications development work.
Along the way, this book provides gradual tutorials and develops non-trivial Python programs in a variety of common domains: the Web and Internet, GUIs, systems administration, databases, text processing, networking, parallel programming, Python/C integration, and more. Although new and emerging technologies are also discussed, this book's main goal remains teaching fundamentals of Python applications which underlie and span systems, rather than the transient bleeding-edge.
As such, this edition is designed to work best as the second in a two volume set: it's intended to be a natural follow-up to the language fundamentals book Learning Python, and augmented by the reference book Python Pocket Reference. These other books are not strictly required reading, but their topics and material are assumed prerequisites. Programing Python builds upon Learning Python's knowledge base, to tell the rest of the Python story.