When this book was proposed by the ACCU Reviews Editor, there were a couple of snide remarks that this would be just another ‘Python in 21 Days’ kind of book. I wanted to learn more Python, so I asked to review it.
I am in no way a Python expert. I have read a few other books and dabbled with the odd script to automate tasks now and again. One project, many moons ago, used Python for some prototyping, but that is about it.
This isn’t a book for total beginners. You are expected to know the basics of programming. I would agree with that assessment, as the book does go fairly quickly from introduction to setting up your environment to functions and lambdas within about 100 pages.
The book covers a lot of ground. Initially, when I was reading the book, I felt that the order that topics were covered wasn’t terribly logical. Project Structure is explained before Variables. For me, starting with standalone scripts and all the syntax and then working up to projects would make sense. But then I thought, what about someone that’s just joined a team working on a large codebase? They’re going to want to know how to navigate a Python project early on. So I concluded that there can’t be a ‘right order’ for a book like this.
From a C++ perspective, I found most of the basics to be easy to follow. There are plenty of examples (often with a jokey theme to reflect the origins of the Python name: Monty Python’s Flying Circus). Not far into the book, things start getting into territory that is pythonic in a way that is unlike older C++: generators and comprehensions (C++ 20 does add a lot of features with ranges that allow more direct composition of actions on containers). One other aspect of Python that was somewhat foreign to me were the parts of Python that are more malleable than the generally static C++: decorators and properties. Overall, I was happy with the explanations given for these features, but I’ll need to get down to some practice for them to really sink in.
I had hoped to see a bit more on packages that I’m likely to use – Numpy, Scipy and perhaps Pandas. Third-party packages are covered in the last chapter, and when I reached it I realized that the book would have been unmanageable had it also covered even a few popular packages like these in any depth. Even as it is, there are a considerable number of references to web sites for further reading. And there are many topics covered in the book that I haven’t even touched on: I/O, debugging, packaging and concurrency, to name a few of the major ones.
Overall, I thought that the book was reasonably paced and clear. I’m not expert enough to judge it for accuracy and completeness. I expect that I’ll refer to the book the next time I start a small Python project.