Author: Bill Lubanovic
Audience: Not beginners
Reviewer: Mike James
Python is a popular first language and it is used by many first courses in programming. An Introduction to Python is perhaps just what we all need.
To really understand what this book is about and what it offers it is important that you read to the end of this review and you also need to know that it is about Python 3 - which is a good thing.
The first chapter of this book is a miracle. It manages to introduce Python or any programming language in the way it should be done. It starts of slowly and with lots of reassurance. It makes use of everyday analogs of programming - recipes, knitting patterns and so on.
I thought I had at last found the book that I could hand over to any complete beginner and expect them to climb the hill of programmerhood.
Then I reached Chapter 2. This goes back to the way just about every other book deals with programming knowledge. From a style that is gentle and approachable and suited to the beginner, the author starts to use words like "floats" and "precedence" and dives into the deeper corners of whatever subject is being explained. In this chapter we meet most of the details you need to know about strings - not just an introduction, but an exhausting exploration.
Then in Chapter 3 we have the horrors of Lists, Tuples, Dictionaries and Sets. Of course these things are only horrors for the beginner who has enough trouble taking in one easy data structure not advanced things like the difference between List and Tuples. The author is no longer organizing Python according to the needs of the beginner, but according to the logical completeness necessary for an intermediate to expert programmer.
This rapid but logical presentation continues in Chapter 4 where, at long last, we reach the subject of flow of control. This is where it is make or break time for the beginning programmer. Alas, there is no spoon feeding here. Starting with comments, which are always easy in any language, we quickly move on to the full if statement, i.e. complete with elif and else; a look at the for loop complete with skip and continue; comprehensions; functions; generators; decorators; name spaces; and try ... except. You can see that this is most of core Python in a single chapter. This is not for the complete beginner.
Next we have larger structures - modules, packages and programs. Then on to objects and classes, inheritance, overriding and so on. By Chapter 7 you are expected to be something of a master of Python. The subject matter gets more general and so we deal with text strings, unicode, binary data and bit manipulation. The gentle introduction of Chapter 1 is now a million miles behind us.
Chapter 8 explains how to read and write a file and goes into details of different file structures - HTML, XML, JSON etc - before moving on to SQL - yes SQL. There are small sections on the best known SQL databases and even no-SQL databases.
Chapter 9 moves on to using Python on the web - web servers and web clients. Mostly this is about using Python with other non-Python web servers and the frameworks that are available to do so.
Chapter 10 goes into interacting with the operating system and Chapter 11 covers two not really related topics - concurrency and networking.
The final chapter is "Be a Pythonista". This is a collection of topics building around the Python language proper. After explaining pip and package mangers in general, we discover that there are IDEs such as IDLE, PyCharm and IPython - why not introduce at least one of these earlier? The chapter finishes with a look at testing, debugging, source control and other ways of running you Python code.
This is a good book, even though you might not think so from the comments made so far. The problem is that it claims to be an introduction to Python and if you read only the first chapter you will think that it really is the book a beginner needs. And yet as soon as Chapter 2 the level has ramped up so that any reader without a good idea what programming is all about would find it hard to keep up.
If you regard the book as an introduction to Python for readers who can already program, perhaps even in Python, and want to learn more about how far Python can take them then it is a good choice. The author's style is very readable and the explanations are mostly understandable and it covers a lot of ground.
It is a huge shame that the book isn't an introduction suitable for the complete beginner because Chapter 1 was very promising. Perhaps it could be removed from this book and expanded into a different book that continues at this gentle and accommodating level. This would leave us with a coherent work consisting of remaining chapters targeted at the more able programmer.