Author: Mark Lutz
Aimed at: Intermediate level developers
Pros: Comprehensive coverage
Cons: Tends to repetitive in effort to be complete
Reviewed by: Mike James
This is the fourth edition of a well known book on Python. Its main feature is that it's huge - especially so for an O'Reilly book. It certainly isn't an "in a nutshell" title and while it is comprehensive it probably isn't for the complete beginner.
Part I of the book, some 70 pages long, gets you started with Python - installation and your first program. Part II is on types and operators and covers the basics of strings, objects, numeric variables and more advanced data types such as lists and dictionaries.
It's not until Part III at page 260 that we get on to control structures and more general syntax. This makes it difficult for a beginner to get to grips with programming quickly. This part also deals with more advanced ideas such as iterators, lambdas and comprehensions - these could have been left until later.
Part V is all about modules and packages while Part VI deals with object oriented programming in great detail including some advanced topics and an example that aims to demonstrate why objects are a good idea. Part VII deals with exceptions and Part VIII is reserved for advanced topics - unicode, attributes, decorators and meta classes.
This brief outline of the book indicates the problem from the beginner's point of view. The author tends to be complete and once started on a topic tends to deal with it until it is complete. This tends to introduce lots of considerations that a beginner just doesn't want to know - yet. It also means that the beginner is kept waiting for simpler pieces of information that could complete the picture.
It does, however, cover the principles and ideas of programming - flow of control, variables, objects and so on. As long as you are not put off by the many more advanced topics slipped in just to be complete then you could learn to program in Python using the book. There aren't many examples, however, and the style of the text is very dry - a feature which many readers will welcome - with a sprinkling of Monty Python references.
While this book isn't entirely suited or aimed at the beginner it also isn't really for the expert because it covers everything in minute detail and goes over the basics of programming. It also tends to be repetitive, mostly in an attempt to make each chapter self contained, which contributes to the size of the book. As long as you are prepared to skip bits this might not be a huge problem.
It is also important to know that it deals with Python 3 but points out differences with Python 2.6 as it goes along.
Overall this is a book that is probably not going to please any of its readers 100% but that doesn't make it a waste of space. It is a useful intermediate-level, extensive look at Python and as long as you don't expect every page to be a reward for buying it you won't be disappointed.