Author: Eric Matthes
Publisher: No Starch Press
Audience: Not the complete beginner
Crashing doesn't sound nice but a crash course in Python sounds much better.
To be honest this book is a bit on the large size to qualify as a crash course in anything, but don't let that put you off. I have to admit, however, to finding the cover illustration disturbing. The Python looks friendly enough, but being wrapped around a jet engine is positively weird. But again, this has nothing to do with the quality of the book.
The subtitle is "A Hands-on, project-based introduction to programming" and this does give you a good idea of the approach. The book is divided into two sections - Basics and Projects.
Part 1 is about 227 pages and thus is about half the book. You need to keep in mind that the crash course in Python is only half the book and the rest of your learning is all based in following the example projects.
The book starts off with a look at Python and how to get it runing. It deals with Python 2 and 3 although 3 is prefered. You get to use basic IDEs to develop your Python - Geany on Windows. After this fairly long section the book follows a fairly standard path through Python. Rather than teach the general idea and then show how it works in Python the book is very focused on telling you what Python commands and other features are for.
As such this is a beginners book but not a complete beginners book. It also has the common fault of trying to be complete rather than understandable. For example rather than just introducing the if statement and then return to this difficult topic later after it has had time to sink in all of the possible forms of the if are covered as part of its introduction. In the same way there is no clear effort to teach iteration in all its forms and uses just a collection of "loops that Python supports". This is a common failing, authors often confuse teaching the details of a language, with teaching the concepts of programming.
The book continues on through Python in no particularly logical order apart from a vague sense of working from the simple to the more sophisticated. So we move from basic variable, through lists, then if statements, dictionaries, user input, functions and finally at chapter 8 classes, then straight on to files and exceptions and testing code. This is just a barely adequate introduction to programming. What there is is well presented and well written but it lacks depth and shows little sign that there are bigger general principles at work.
For example objects are introduced as a way to group functionality. Inheritance is hardly mentioned and the idea of a class hierarchy to model the real world is over looked. Classes are simply ways of packaging some functions that you might want to use elsewhere in your program.
This may not worry you. If you are not a 100% beginner and just want to brush up on a limited range of Python features and facilitie the approach might work for you. However be warned that the whole idea of object oriented programming isn't given enough emphasis.
The second part of the book is a set of three projects. The first is about implementing a game - alien invasion aka space invaders, the second is about data visualization i.e. drawing charts and the final one is about implementing a web app.
Each one of the projects makes heavy use of one or more libraries. The game makes use of Pygame, the data visualization uses Mathplot and the web app uses Django. This means that much of what you are learning is about how to use these particular libraries. Again this isn't a huge problem in that using Python for real often does come down to finding your way around some library or other. It isn't clear how well these examples will help your programming skill develop, but at least you will have had the opportunity to see how a big program is constructed. However, the descriptions are strong on the detail and not so good on the bigger picture. There is no way of the reader to see where the project is going - you just have to follow along the description of what the author did.
This is a book that presents the reader with a lot of code and a lot of explanation of code. It is light on the deeper ideas, which if treated at all are presented as introductory comments. This is not a deep book and at the end of reading it, even if you follow all of the projects, you will still not know or have even encountered many of the important ideas of modern programming. However, if you just want a book that explains lots and lots of Python code then it might be the one you are looking for.
Python Books For Beginners
Books for Pythonistas
To keep up with our coverage of books for programmers, follow @bookwatchiprog on Twitter or subscribe to I Programmer's Books RSS feed for each day's new addition to Book Watch and for new reviews.