a good example of Python culture, in the clarity of its text as much as in the quality of its code
The book uses the traditional bottom-up approach. After an opening part motivating the language and introducing the interpreter we progress, from data types, through statements, and up through functions, modules, classes and exceptions. Classes get 100 pages; other parts get about 50 pages each. A closing part covers common tasks, advanced uses, and Python resources. Appendices give details on installation and configuration, and provide solutions to all the exercises.
The book is thorough and patient. Topics are discussed in detail and at a steady pace. Repetition is used more than cross-reference. This book would be very good for self-study, as there is plenty of room for the plodder or the dipper. The exercises are worthwhile and to the point, and the solutions are explanatory.
Documentation and design issues are addressed early and often, and are clearly a central part of what is being taught in this book. The example code is of the highest quality.
The book's faults are minor. Although the preface says PyUnit and doctest are in Chapter 11; they are not, being given just a paragraph each in the core language summary in Chapter 26.
The book is not comprehensive (not a fault in itself), and a small number of language features are deemed 'too advanced' to be covered in depth, among them generators and the 'new style' classes. These features are sketched and given use cases, and the interested reader is directed to the documentation. Otherfeatures - like the useful little enumerate(object) - are not mentioned, but you have to draw the line somewhere. At 591 pages, the book is already large, but not unwieldy.
This book is a good example of Python culture, in the clarity of its text as much as in the quality of its code. Anyone working their way through it will have a solid foundation upon which to explore Python's potential. Highly recommended.