So, you're an intermediate Python programmer. You've earned that title through coming into Python after knowing another language, or by going through Python tutorials or classes until you felt confident enough in the basics. That's great. Now, it's time to really spread your wings and really start thinking in a Pythonic way. Here are ten of my favourite resources to do just that, including fun challenges, must-read books, reference tools and projects.
Website, Doug Hellmann
As the name suggests, this website highlights a single Python module each week, taking you through the practical details of the standard library. As Python itself is fairly straightforward but its libraries are famously immense, this is a nice way to get better acquainted with them without getting too overburdened. Just bookmark it, check back every week and you'll be up to speed in no time.
If you're looking for a deeper understanding of Python, then one of the best resources is the O'Reilly title Fluent Python. This book is intended for intermediate to experienced Python programmers, so this might not be the best choice if you were calling yourself a Python beginner not too long ago!
Website or Book, Guido van Rossum
Python is rare in having an official resource that is actually excellent. Along with the official Python tutorial, Python creator Guido van Rossum takes you though the most essential parts of the Python language. This is particularly handy for experienced programmers that are new to Python. Once again, bookmark it and refer to it whenever you get stuck — odds are, you'll be able to solve your issue or at least learn where to go next by checking this resource.
Book, Brett Slatkin
This book's subtitle is '59 specific ways to write better Python', and that's exactly what you get. Each chapter offers a proper lesson with source code printed with syntax highlighting, exactly as you'd have on screen. Through going through the examples, you should gain a better understanding of how to solve common problems and what makes Python tick.
Book, David Beazley
This title is regarded as one of the best books for learning Python if you're already an experienced software developer. Note that a fifth edition of the book based on Python 3.6 will be available in late 2019, so if you're reading this close to that date, you may want to hang fire for a more up-to-date version.
Project, Richard Schneeman
Reading books and playing with challenges can be a good way to learn, but what about contributing to an actual open source project? CodeTriage gives you the chance to do just that, providing a way to easily find and join an open source project that needs questions answering, bugs fixing and so on. If you're new to open source and you're not sure how to get involved, this is a great place to start.
Website, Aristotelis Kittas
These presentations are sparsely presented — just a Github page with a choice of slides in several subjects — but provide some valuable real world examples of Python problems and how to solve them, with jokes peppered throughout. For the live version, you might be able to find the author at a Python meetup if you live in or near the UK.
Of the two main Python sections on Reddit, /r/Python and /r/LearnPython, the latter is the most practical option for someone looking to improve their skills. As new books are published, challenges created and questions answered, you'll find all of them here. It's also a nice way to give back to the community, by answering the questions of others when possible. You can do something similar on legendary programming resource Stack Overflow as well.
Website, Philip Guo
This useful tool shows you what is actually happening as each line of code is run. This visualisation makes it much easier to find logical errors and gain a better grasp of Python, as you can step back and forth to see exactly what is happening in your variables, objects and so on. You can even ask other website users to join in and chat with you about whatever problems you're facing.
Website, Louie Dinh
Python Practice Projects is another well-named resource, providing… small Python projects for you to practice with! You're asked to build a command line parser, a lisp interpreter, a templating engine or a static site generator, and given just enough information to get started. If you are just learning and practising Python in your spare time, this is a nice way to actually be motivated to finish a useful program!
Did you find these Python resources useful? Got any more to add? Let us know in the comments below.