Verdict: Not recommended
The cover of this book has a slogan: ‘Beginner to Pro’. This book is definitely meant for someone who wants to make a start in programming. I wouldn’t say that after finishing the book one could claim to be a ‘pro’.
I have several issues with this book. Let’s start with the format. The authors are very proud to state that:
…all of the information is presented in ‘paired pages’, with the essential syntax, guidelines, and examples on the right page and the perspective and extra explanation on the left page. This helps you learn faster by reading less...and this is the ideal reference format when you need to refresh your memory about how to do something.
I found this feature extremely annoying, because it meant I was reading everything twice. Maybe it works for the paper version of the book, where both pages are visible at the same time, but I was supplied with an electronic version which I read on a tablet. The electronic version is laid out like a printed book, with large white margins, no re-flow and most importantly no way to increase the font size. It doesn’t make for a smooth reading experience.
Furthermore, to get access to the book, I had to sign up on a website that wants to store analytics cookies by default. Then I had download and install a proprietary app. It felt a bit too much of being tied in. The app itself doesn’t present much more than any other decent e-reader application does.
Regarding the contents of the book, the aims are lofty. It is divided into 4 parts: ‘Essential concepts and skills’, ‘Other concepts and skills’, ‘Object-oriented programming’ and ‘Database and GUI programming’. All of that in only 534 pages (this excludes front matter, appendices and index). As is to be expected, most subjects cannot be discussed in depth. That is not necessarily a bad thing, as the book is very introductory and starts without assuming any programming experience. However, I think for someone who has no previous experience with Python or even programming, more on the basic data structures and programming idioms should have been covered. List comprehensions are mentioned but dictionary comprehensions are not. The
with statement is introduced, but the wider idea of ‘context managers’ is not. The iconic PEP8 is not mentioned (nor followed).
Using 3rd party packages is out of the scope of the book, which is fine, but the rich ecosystem of freely available python packages is not even mentioned. Nor is that if one would want to install other packages, care must be taken not to contaminate the operating system’s python installation and that virtual environments are a solution.
The part on object-oriented programming feels like it is written by someone coming from a Java background without a lot of python experience. Setters and getters are preferred over properties or simple attributes. A lot of focus is put on encapsulation, which normally is not an issue in the python community. It is claimed that a variable starting with a double underscore is private, but such a thing doesn’t exist in python. Double-underscored variables in a class are treated differently from other variables (which can be useful when inheriting), but they are not private.
The fact that inheritance is not a necessity in python is not mentioned. The language is not strongly typed and duck typing can be used to change behaviour.
The chapter on database programming should have been left out, as it has nothing to do with python and skims over many things while introducing some SQL statements. It doesn’t add much value. The chapter on GUIs (tkinter) is a nice idea and not often found in python books.
To summarise, I found this a disappointing book. Many better books and websites can be found and I suggest you should look for those.
Sources I’ve found useful include:
The Quick Python Book by Naomi Ceder
Python 3 Object-Oriented Programming by Dusty Philips
Fluent Python by Luciano Ramalho
Python in a Nutshell by Alex Martelli, Anna Ravenscroft and Steve Holden
Python Distilled by David Beazley (scheduled for September of this year). David Beazley is a respected speaker and teacher of python, so I expect reading this book will be time well spent.
python.org, the python website with excellent documentation.
pymotw.com/3/, Python module of the week by Doug Hellman, demonstrating how to use the modules of the Python 3 standard library.
realpython.com, many tutorials and articles, though not everything is for free.
Corey Schafer, many, many videos on python and python packages with very clear explanations. A real treasure trove.