Every language deserves a book like that
Fluent Python showed me how illiterate I was about Python, and how bad my code was compared to idiomatic Python code.
Because the language is easy to learn does not make it less powerful. To master the language, we need to look at the most remarkable features and stop coding like we do in other languages. This book is all about these features.
Fluent Python is not for beginners. List comprehensions and generators are presented in details right from the beginning. Very quickly, the author dives into the Python internals. How str are represented? How set works? How to print the bytecode? etc. While the book goes far in details, it keep it interesting.
Each or the six parts forms a book within the book. It’s a huge book. The best way to determine if this book deserves the reading is to read the extensive table of contents to know if these topics are familiar to you or if you need a reminder.
I really appreciated the notes at the end of each chapter, listing the numerous resources used by a very meticulous author, a good place to discuss terminologies (Should we say Python data model or Python object model? How special methods compared to magic methods or metaobjects in other languages?). This is unusual but it brings valuable insights into the language history and the famous debates since its infancy.
Fluent Python is not without flaws. The author tries to pack as much information as possible but some topics such as concurrency and metaprogramming deserve their own dedicated book, and are less relevant concerning the initial goal to write Pythonic code. Moreover, the chapter on Design Pattern covers only 2 patterns and using the Django framework to present multiple inheritance seemed to me as a good idea, but the result is overly complex. Also, code examples contains too many callouts. Great books are defined not just by what they contains but also by what they decides to left out. Fluent Python sometimes failed on this but this should not detract you from its qualities.
To end with a quotation of the author, “I haven’t yet found a language that manages to be easy for beginners, practical for professionals, and exciting for hackers in the way that Python is.” This book perfectly reflects this opinion.
Note: This book is about making the most of Python 3.4, but may be useful even if you must stick with Python 2.7 or plan to migrate from it.