Learning Python - Powerful Object Oriented Programming by Mark Lutz, O'Reilly Media

View on GitHub

In the 5th edition of this book, author Mark Lutz takes you on a comprehensive tour of the Python language. In this book he covers a lot of ground, and does so in an easy-to-understand way, making this book great for beginners, or for someone coming from another language. Moreover this book covers both Python 2.7.X and 3.X which is a big plus.

Learning Python lives up to its title: after reading this book, someone new to programming altogether will walk away with a solid understanding of the Python language basics, including some advanced features. As mentioned this book covers a lot of ground, which is to be expected when it is 1600 pages long, however, it does so in an engaging manner. The author manages to convey the more complex concepts in a good way by breaking them down and walking you through a large range of examples. Furthermore, the writing style is very clear and it is obvious from the text that this author has a lot of experience teaching classes on Python as he seems to "preempt" any confusion before it arises.

Compared to similar books, Learning Python goes deeper into each topic, and covers more topics than any one "Learning" or beginners' book that I have seen. I believe that's a real plus, as you are not left hanging with questions regarding a topic as one sometimes might be when reading books that just scratches the surface and gives a brief example of some language feature. Even though this book is appropriate for beginners, it introduces what is sometimes thought of as more advanced topics, such as list comprehensions, decorators, descriptors and generators. It is nice to see these features and more included in this comprehensive text as they have become more prevalent recently.

There is only one negative that I can think of with regards to this book, and that is the author's tendency to repeat himself. This is partly due to how the book is organized, and it would benefit from merging similar or identical topics into fewer sections. That is, a topic is covered, and then covered again, and once again but each time the topic is elaborated on more in-depth. Although I understand the idea behind this 'build on what we've learned' style I nevertheless think the book would benefit from having one more "superficial" introduction to the topic, and then a single more in-depth look at the topic rather than multiple, briefer in-depth discussions over multiple different sections which partly overlaps with the previous discussion of the topic.

All in all I would highly recommend this book to someone wanting to learn the Python language, whether a complete newcomer to programming, or a seasoned programmer wanting to pick up the syntax and style. In my opinion it compares favorably to Think Python as well as Introduction to Computation and Programming Using Python.