Author: John Rowland
Publisher: Amazon Digital Services
Audience: Complete beginners
Reviewer: Alex Armstrong
Who would want to learn Python slowly? But there is a lot of Python to learn, so how quick is quick?
This is a very slim book aimed at complete beginners. It is even shorter as an introductory book when you realize that only about 100 pages are actually tutorial material and that the glossaries in sections 2 and 3 are really only of use to the reasonably competent programmer. The final section is a list of solution to exercises.
So how fast do you want to go in just 100 pages?
Chapter 1 tells you how to install Python 3 and write some simple commands using the REPL and IDLE. Chapter 2 is called "Getting into the language" and it takes a bottom up approach by introducing the fundamental data types first. There is a lot to trip up a beginner. The first exercise, for example, asks for the cube root without explaining very much about the standard operators, let alone how to take a cube root. After worrying the beginner with the vagaries of floating point we move on to strings - which is much safer ground for the non-numerate beginner. Unfortunately it simply references the glossary and then gets started using strings - no mention of what a string is, is it something to tie knots in?
By the end of the chapter we have reached the key idea of programming, flow of control. But it is dismissed in a few lines and then we move on to get on with the programming. The constant reference to the glossary is irritating if you are trying to follow the narrative and if you did keep following the links you would be reading a very non-linear book and you would probably be confused.
After this all-too-brief look at flow of control we move on to Chapter 3 and Python's key data structures - Lists and Dictionaries. The problem is we only have three pages to cover them and most of this space is taken up with exercises for the reader to do. Without some additional help, I can't see that a complete beginner is going to get very far. Lists and Dictionaries are easy enough to understand the basics of, but there is a lot to learn before you really start using them.
Next we return to for loops and how they work with lists via list comprehensions. The next chapter deals with break, continue and pass - no mention of the fact that some programmers think that break and continue are as bad as using a goto.
Chapter 6 is a lightening view of functions. No effective justification of why we use functions is given. It would be better to explain why breaking a program into smaller functions is good - but this is a minor omission. Chapter 7 moves on to file handling, Chapter 8 reading and writing databases and spreadsheets including SQL. This really isn't appropriate for a beginner still struggling to understand flow of control and modular construction. It is useful yes, but only after you have mastered Python.
From here the book looks at various practical topics such as exception handling, hints and tips and using Tkinter to build a GUI. Tkinter is so broad and rich that it needs a book of its own.
Chapter 12 is the only chapter that deals with a "big idea" and it comes this late! It explains classes and object-oriented programming. For me its example was too big and the motivation for using classes and objects didn't really work. There is a basic failure to make clear the distinction between class and instance and this makes concepts like "self" difficult to understand. I was particularly distressed to read:
"Finally this summarises when to use classes (and remember the default is don't) ..."
Yes, Python can be used as a functional language and when you are first learning it ignoring its object-oriented facilities is a good idea, but using classes and objects should be the basic way to construct all but the smallest programs.
Overall this book is a bit too quick at teaching Python. It covers too many ideas in too little space and then uses the rest of the space to present a reference to Python that is just as easy to find on the web as part of the standard documentation. It lacks any justification for why we do things in a particular way and it doesn't give the reader any access to how to think about what is going on when a writing a program. It all comes down to - "we do it this way so get used to it".
I can imagine that you could make use of this book as a plan for a course that you might deliver while providing all of the missing motivation and details yourself.
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.
For recommendations of Python titles see the following articles on Programmers Bookshelf: