AUDIENCE: Beginning programmers. A reasonably good first text. Teaches and touches on numerous computer science ideas. Great for a high school or college level intro to programming class.
FLAWS: Not up-to-date with language features, computer science constructs seem to be somewhat randomly presented (perhaps this is the "muddle") another reviewer complains about, OOP is introduced far to late (in my humble opinion).
ULTIMATELY: Glad I bought it, would buy 2nd edition, have used it as a textbook for university classes.
This is a good guide to programming for the non-programmer. It develops basic procedural and structured software development ideas. It introduces OOP - object oriented programming - with some interesting examples. It concludes with four chapters on data structures.
This is not a systematic survey of the Python language, a book of slick examples for sophisticated programming (Programming Python, Dive Into Python, Text Processing in Python and Python Cookbook are excellent examples of wonderful Python riffs that exemplify state of the art application of Python to real-world problems. All of these assume some programming sophistication, however). This is a nuts and bolts, hand-holding exploration of some basic ideas of computer science using Python. It does this quite well.
Shortcomings include being somewhat dated. It does not cover some of the newer features in Python, such as list comprehensions or new-style classes. An additional shortcoming is that it reads too much like a traditional computer science text, and relies too much on procedural programming.
I suppose it's time for me to quit griping. I've taught many people to program using this book. It taught me the basics of Python so that I could appreciate Mark Pilgrim's Dive Into Python, which really gave me a feel for the power of the language (granted, I had been developing software professionally for over 15 years at that point).
It is not a reference manual. A second edition needs to be written. I believe that OOP should be introduced much earlier, and can then become a much more natural approach to programming.
If you want a reference manual for Python, or something more advanced than a beginner's text, or something describing up-to-date language features, then keep on searching. Or, download a copy of this and try it out. See if it serves your needs. A link to the free download can be found at the Python ORGanization site.
But unlike the free download, you can set this on your desk next to your keyboard. After the first several chapters in the soft version, I ordered the hardcopy. I have not regretted that decision.