Dive Into Python by Mark Pilgrim
The back cover of Dive Into Python claims it is a practical book for busy programmers. As a rule, one should never believe back-cover blurbs, but this one is true. This book teaches Python by dissecting useful programs that do actual tasks, such as using regular expressions to validate street addresses and phone numbers and accessing HTTP and SOAP Web services, and providing great detail about what might go wrong and how to troubleshoot it. Pilgrim emphasizes how to write unit tests and the “write tests before code” philosophy.
In the book, readers get the code before the explanation. Pilgrim does a remarkable job of making his explanations clear and complete, and he introduces concepts exactly where you need them. Dive Into Python is not a reference book, however. If you see len() or func(*args, **kw) in an example and don't know what it means, you have to visit the on-line Python documentation.
Pilgrim is a philosophy major, and he sprinkles philosophical humor throughout the book the way Larry Wall sprinkles camels. He even quotes Larry in saying Perl is worse than Python “because people wanted it worse.” My favorite gems are, on reference counting, “Things disappear when nobody is looking at them” and “Bugs happen. A bug is a test case you haven't written yet.”
Dive Into Python is published under the GNU Free Documentation License—cheers to Pilgrim and Apress for doing this. Let's hope more books will be published this way.
See the Dive Into Python home page diveintopython.org; the complete text of the book is on-line.