You can find here a curated list of python and “general” programming books that had a significant impact on the way I code. You can expect the following list to expand over time.
Fluent Python: Clear, Concise, and Effective Programming by Luciano Ramalho. This book aims to give you a complete tour of all python features with best practices on how to use them. Comes with lots of small code snippets/examples illustrating what’s actually happening under the hood. To give one simple but concrete example – do you know when decorators are evaluated? How do they relate to closures? If no, grab the book. If yes – grab it either, since for sure you will find a topic where you can learn something new (ever seen a “yield from” construct?). Explanations sometimes may feel longish but this is actually a good thing – the author does a great job making sure you end up understanding all subtleness behind given language feature.
Effective Python: 59 Specific Ways to Write Better Python by Brett Slatkin. This is a gem. Written in the “Effective C++” manner gives you tons of usable and very concrete techniques on how to improve your python code. Already translated into 7 languages including German, Polish and Portuguese.
The Pragmatic Programmer: From Journeyman to Master by Andrew Hunt. Not a python book. Still, a must read since shows an optimal direction for programmer’s attitude to coding. Some extra points for having “pragmatic” in the title.
Expert Python Programming by Michał Jaworski and Tarek Ziade