Making Use of Python
Rashi Gupta
Wiley
THE GOOD:

I read this book cover-to-cover in a week.  It's a small book (300 pages) and a quick read for an experienced programmer.  I liked the format of the book as well.  It uses a fictitious storyline where you and the author are trying to build a website for "Techsity University".

The overall quality of editing was decent, but it could have been a lot better.  I found at least 10 editorial mistakes, including a paragraph repeated verbatim right after it was stated.  Yet, I found only one mistake where the code was incorrect in the whole book, which is a huge plus, as I hate finding bugs in an author's code when I am learning the language from them.

THE BAD:

The coverage of method overriding was confusing, despite the fact I knew what the author was saying.  I can easily imagine someone who does not know what method overriding is being extremely confused by this section of the book.

It's not that the overall book is confusing, because, at times, the author makes stellar points.  The problem is that the quality of the writing is not consistent and can vary greatly from topic to topic, and sometimes varies greatly within a single example.  For instance, the coverage of CGI programming uses antiquated HTML style and generally looks like HTML written in the 1990s.

In addition, the book does not really discuss the "Pythonic Way" to write things.  This, I feel, is the greatest shortcoming of the book, since it seems to be targeted toward experienced programmers who are familiar with concepts like polymorphism and inheritance.  While form should never come before substance, Python programmers believe there is a canonical way to do any task in Python.  This belief is seems so engrained in the Python community that I am surprised the author did not bring it up.

There are also some technical errors in places.  For instance, when the author is describing the MySQLdb module, she says that close() will close a connection to a database.  This is not true.  It only closes the cursor.  A database connection will be trivially closed when the object is no longer in used.

Finally, this book is not for beginners!  The book does not contain any exercises, so it is probably not appropriate for someone looking to learn programming.  For that, I recommend Python Programming: An Introduction to Computer Science.

Overall, the book does not have a suitable audience.  Experienced programmers probably will want a book that focus on the "Pythonic Way" presentational angle, while beginners will want exercises to test their comprehension of new concepts.