Effective Python
125 specific ways to write better Python — covers Pythonic thinking, functions, classes, concurrency, and robustness
Visit Effective Python →Structured as discrete, numbered items — “Item 3: Know the Differences Between bytes and str” — each covering one specific practice with a clear right and wrong way to do it, rather than a narrative you read start to finish. That format makes it easy to use as a reference, dipping into a specific item when a question comes up rather than reading cover to cover.
Covers functions, classes, concurrency, and robustness at the level developers hit once they’re past basic syntax and want to know why certain approaches are considered more Pythonic than others — similar territory to Fluent Python, in a more scannable item-by-item format.