Python Crash Course, 3rd Ed (No Starch Press)

Author: Eric Matthes
Publisher: No Starch Press
Pages: 552
ISBN: 978-1718502703
Print: 1718502702
Kindle: B09WJX22TV
Audience: People wanting to learn Python
Level: Introductory/Intermediate
Audience: Not the complete beginner
Rating: 4
Reviewer: Alex Armstrong
To reach a third edition this book must be doing something right...

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. Its 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, essentially the crash course, is about 223 pages and thus is about half the book. 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 running. This edition standardizes on Python 3 which is a good idea and Visual Studio Code VS Code, which is arguably a good idea. VS Code is a powerful editor and Python is one of its best supported languages but it can be confusing for the beginner.  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. Fortunately it doesn't cover pattern matching at this stage, which is the modern way to do a deeply nested if. In fact it doesn't cover pattern matching at all which is a serious omission for a book that tries to be complete.

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 9, 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 facilities 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. 

Related Reviews

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.


The Programmer's Brain (Manning)

Author: Dr. Felienne Hermans
Publisher: Manning
Date: September 2021
Pages: 256
ISBN: 978-1617298677
Print: 1617298670
Kindle: B09CQHBVQZ
Rating: 4
Reviewer: Mike James
Programmers have a brain - but what is it doing?

Racket Programming the Fun Way

Author: James W. Stelly
Publisher: No Starch Press
Date: January 2021
Pages: 360
ISBN: 978-1718500822
Print: 1718500823
Kindle: B085BW4J16
Audience: Developers interested in Racket
Rating: 4
Reviewer: Mike James
If you have ever wanted to Lisp then try Racket.

More Reviews

Last Updated ( Wednesday, 27 September 2023 )