I want to answer a question that I got on Twitter the other day:
Someone asked for book recommendations to move past the “beginner” stage in Python – The person was looking for intermediate-level books that would help them get past the basics so they could improve their skills by working on small projects.
Let me start by saying that I really like this approach to learning a new programming language!
It’s a good idea to start working on real projects as soon as possible, even if they’re small. There’s only so much you can learn from repeated let’s implement this algorithm exercises.
These are the books I recommended:
Automate the Boring Stuff with Python by Al Sweigart has some great “project like” exercises. It covers common real world tasks like web scraping or filling out online forms. This really helps keep your motivation up and getting a sense of accomplishment. The book is free to read online under a Creative Commons license (but you can buy a copy to support Al).
Effective Python by Brett Slatkin is also a great book that will help take your Python skills to the next level. It focuses on teaching you to write more pythonic code and learning the community best practices, without running the danger of overusing some of Python’s more arcane features to the detriment of your code. It’s all about hitting that sweet spot and Brett teaches this lesson well!
Fluent Python by Luciano Ramalho is intended as a hands-on guide covering the features that make Python special. I like how Luciano focuses on teaching the pythonic way to do things, which helps if you’re trying to “unlearn” patterns you’ve picked up from working with other languages. (Jim Anderson emailed me to recommend this book. Thanks Jim!)
Python Cookbook, 3rd Ed. by David Beazley and Brian Jones is more project-based again. It’s chock-full of recipes for common tasks across various application domains like data processing or network programming. This is probably the most advanced-level book of the three, covering topics like metaprogramming. But there’s just so much information in there that I’m sure you’ll learn something useful from it even with beginner-level Python skills.
I hope that helped you out!
P.S. What are your favorite books and resources for moving from junior/entry-level Python to intermediate and beyond? I’m thinking about writing a longer article about this topic and would love to hear about your best resources and learning strategies. Leave a comment below if you’ve got a minute!
Update (2017): I wrote my own Python book for intermediate developers looking to write clean and Pythonic code. This is a bit of shameless plug, but if you like this list I’m sure you’ll love Python Tricks: The Book – A Buffet of Awesome Python Features.