As a self-taught software engineer books played an important role in moving from digital marketing into software engineering. While many people these days seem to prefer learning via video courses, I have always found books the better tool in my experience.
Automate The Boring Stuff with Python
This well known book written by the effable Al Sweigart, probably represents one of the better books for absolute beginners. The book introduces basic programming concepts such as functions and types while allowing users to write short programs that do something useful. I think this approach very appropriate for absolute beginners who need to see the power of what they can do with code. The only weakness of the book is that subjects such as classes are completely passed over. I can however highly recommend the book to anyone who is interested in picking up Python and wants to get up to speed relatively quickly. The book can also be read online for free.
Think Python started out as a Python translation of a Java textbook aimed at new Computer Science students. The author of the original textbook then went on to update the book with Python as the core language. The book introduces users to the Python language and aims to get them thinking like computer scientists. This book is a great choice for those who are more serious about Python and want to pursue programming as a career. However, it is likely less instantly gratifying than the ‘Automate The Boring Stuff’ book. Think Python can also be found online for free, which makes it another great choice for beginners.
Grokking Algorithms is technically not a Python book, but all of the examples contained in the book are written in Python. The book provides readers with a good introduction to algorithmic thinking and several core algorithms that are widely used in computer science. This book should definitely not be your first programming book but should you have made progress with both ‘Think Python’ and ‘Automate The Boring Stuff’ this book could certainly be worth reading and is particularly useful if you are looking to interview for junior level roles.
For More Advanced Readers
Fluent Python is considered a classic among intermediate to advanced Python programmers with the book taking the reader through a comprehensive tour of Python 3. The book is very well written and those reading it are likely to come away with a better understanding of the language as well as picking up some new perspectives on more familiar topics. This is certainly a book for more advanced readers and it took me a while to fully appreciate the book. I would thoroughly recommend the book to upper intermediate Python users and don’t have any real complaints about the books content. The only minor gripe would be that the Asyncio examples in the book are already outdated using the old 3.4 coroutine syntax which is likely to be deprecated in future versions of Python.
This relatively short but valuable book by Brett Slatkin is effectively a tour of Python best practices. The book provides readers with 59 specific ways to write better Python. The book is broken into chapters which gather points together in an understandable manner. The breadth covered by the book is impressive with chapters on everything from Pythonic Thinking to Concurrency and Parallelism. The topics covered by the book get more advanced the further you progress through the book, meaning that there is something for everyone. Again, another great feature of this book, is the ability to jump into a specific section should you be looking to refresh your memory on a specific subject. Every so often I take a dive back into Effective Python when I want a refresher on a particular topic.
The Python Cookbook is not a textbook nor does it deal with a subject matter topic. It is instead focused on showing readers how they can deal with a range of different programming problems in a Pythonic way. The book is broken into a number of different sections dealing with a diverse range of problems. Each problem comes with one or more solutions and discussion regarding the solution. Reading through the book is enlightening and you are likely to learn a significant amount through consuming the book. The structure of the book is also making it easy to dive in and out should you only be interested in solutions to a particular problem.
The name of this book does it a bit of a disservice. This book is great a resource for intermediate level Python developers looking to push their skills to the next level. Those who are relatively new to the language will definitely pick up some useful information on how to use Python more smartly. The book was only released relatively recently put has picked up a huge number of glowing reviews.