Last Updated: February 4, 2018.

Introduction to this guide

This guide aims to point you in the direction of the right resource(s) for your level of experience with Python – anywhere from total newbie to expert who’s been using Python for years. In my personal learning progression I found it difficult to first figure out where to start with the overwhelming number of options out there, but once I’d figured out a path and worked my way through the basics, also found it difficult to find good “intermediate” topics and projects to work on to grow my skills (everything after beginner just seemed too hard!). I hope this guide can save you that headache or maybe even just present you a single new resource to add to your toolkit.

The focus is on FREE, up-to-date, Python3 resources (any Python2 resources listed will be labeled clearly), and includes video courses, books, podcasts, Python-dedicated websites, meetups/events, online topic-specific-guide/blogs, project ideas, etc. I will also sprinkle in my own tips along the way.

The order of resources below reflects what I view as a “good” way to progress through learning the language (and computer science, if need be), but of course there are a near-infinite number of viable options. I add labels for each resource to give a hint as to when/why you’d want to use each resource, and provide added detail where pertinent. For example, I’ll use the following tags:

Ease in : A slower-paced resource, which introduces concepts in-depth. If you’re totally new to a topic or struggling with it, this is a resource for you.

A slower-paced resource, which introduces concepts in-depth. If you’re totally new to a topic or struggling with it, this is a resource for you. Must! : Self explanatory – this is a resource I personally consider a must-complete. Quickstart variants offer a fast, likely minimalist resource that will cover a whole section of learning. If you want to take things slow or dive deep into a topic, this is probably not a resource for you. Besides a fast start, these resources may be more appropriate if you’re coming from another language (and will be labeled if that’s the case).

Self explanatory – this is a resource I personally consider a must-complete. variants offer a fast, likely minimalist resource that will cover a whole section of learning. If you want to take things slow or dive deep into a topic, this is probably not a resource for you. Besides a fast start, these resources may be more appropriate if you’re coming from another language (and will be labeled if that’s the case). Recommended : These are resources/topics that I’d consider more important than optional, but might overlap with Must! resources or not strictly speaking be necessary to grasp a topic.

These are resources/topics that I’d consider more important than optional, but might overlap with Must! resources or not strictly speaking be necessary to grasp a topic. Optional: Resources I’ve found to be helpful (and of exceptional quality) either in filling in the gaps of Must! or Recommended category topics or that are useful topic-specific resources, but that aren’t necessarily essential to learning Python.

If something seems out of date (e.g. a link is dead) or you have a resource that you think should be added (keeping in mind that this is a curated, succinct list), please leave a comment. With that, enjoy the guide below!

Optional: Guide to course platforms

There are a growing number of course platforms, with an ever-increasing number of classes offered. Which ones should you take? Here’s my rank-ordered list of the “top” platforms (though some of my favorite classes aren’t from my top choice) after having taken a bunch of classes [probably too many] from each of them:

Udacity: The platform focused on learning to “do” stuff. Learn the basics of the language and basic theory, but really classes are each focused on completing a “project” or learning how to do something. For example, the Intro to Computer Science class focuses on building a basic search engine. These classes are great to ease into new tasks or for when theory is getting too abstract/boring. Udacity also offers “nanodegree programs” for a cost, but you can take all of those classes for free. The downside is, they don’t necessarily tell you which classes are in each nanodegree, so you have to piece it together from course descriptions (or rather, you don’t, because I already did for you). Coursera: Probably the most well-rounded platform, with classes in a variety of topics and a relatively even mix of theory/practical application. The new (beta) “Learning Path” system is AMAZING – particularly for data science, for which Coursera has the most robust course selection (many from University of Michigan; Johns Hopkins University; Duke, and University of California, San Diego). Note: despite all the classes being free, many will only show an option to start your free 7-day trial or “enroll.” Just click enroll and select the “audit” option to take the class for free. edX: A collection of classes from some of the top tier of universities around the world, edX is my go-to for complex theory-based classes. Included in the offerings are MITx (MIT’s improved, updated version of OpenCourseWare), which includes one of my favorite programming classes to-date: Introduction to Computer Science; MITx 6-00-1x (more on this course below). The only reason this platform ranks third is that you often have to wait for classes to “start” – very few are “self-paced” where you can start exactly when you want. The good news is, you can just sign up for a bunch of future ones, and when they become ready, archived versions will be saved on your account forever. DataCamp: I haven’t actually taken any DataCamp classes, but they have courses that are well reviewed/recommended by many expert Python users. One in particular, Intro to Python for Data Science, is suggested by the Hitchhiker’s Guide to Python (more about Hitchhiker’s Guide below). DataCamp also has a number of written resources that I have used, and they’ve all been fantastic – I strongly recommend those guides as supplements to other resources you may choose to use. Udemy: Not free! That said, you can often find course bundles marked down from say $200 to $12 periodically. My real problem with Udemy is that there’s no quality control. Basically anyone can list a class/series/bundle whenever they want, charging whatever they want. Sometimes courses are great, but a lot of time they’re a letdown (or would be if you paid regular prices anyway). Other platforms: Codecademy and Khan Academy are both also popular platforms; however, neither currently offers a Python-specific/focused course. If you’re interested in web development, codecademy has some good resources and if you’re interested in data science, Khan Academy has some good beginner math resources. There are also another dozen or so emerging platforms not reviewed here, if none of the class offerings on the platforms above have what you’re looking for.

Beginner

Intermediate

Must! : Effective Python (Book; NOT free). This is, hands down, my favorite Python book to date. In 59 “items” it walks the reader through best practices, important tools in the language, and tips for production-ready code. Each item is nice, short, and easy to digest – walking the reader through a real world task, the common way to complete that task, and the better way to do it. Don’t just take my work for this one though – the book’s also recommended by Hitchhiker’s Guide to Python and a few of my fellow ChiPy members as a “Must!” read. The focus of this list still remains on free resources, but this definitely seems worth the $39.99 (or as low as $12 when on sale on Amazon). Learn more about the book here. planetpython.org: A very complete feed of anything-and-everything Python (including the top blogs and podcasts). If you follow just one Python feed/aggregator, this should be the one. PyCon Presentations . PyCon is the largest Python gathering in the world, and is hosted annually. Events are spread across days and include lengthy tutorials and various talks/presentations for some of the best/brightest in the Python community. Even if you’re not able to attend, you can find videos posted to their website or in channels separated by year on YouTube. Watching these videos (even those from years passed) is a great way to deepen understanding of existing topics, learn about new topics, and keep up on the latest developments of the language/packages.

Effective Python (Book; NOT free). This is, hands down, my favorite Python book to date. In 59 “items” it walks the reader through best practices, important tools in the language, and tips for production-ready code. Each item is nice, short, and easy to digest – walking the reader through a real world task, the common way to complete that task, and the better way to do it. Don’t just take my work for this one though – the book’s also recommended by Hitchhiker’s Guide to Python and a few of my fellow ChiPy members as a “Must!” read. The focus of this list still remains on free resources, but this definitely seems worth the $39.99 (or as low as $12 when on sale on Amazon). Learn more about the book here. Recommended : The Hitchhiker’s Guide to Python (Free online; NOT free Book). While the site is free, I personally found the book to be a helpful resource, and encourage you to consider supporting the author with the bound book: The Hitchhiker’s Guide to Python: Best Practices for Development . This book doesn’t really try to teach Python, but rather offers best practices, tips/tricks/gotchas, and how/when/why to use different tools. For WebDev: Full Stack Python For Data Science: As mentioned above in the optional platform discussion section, Coursera’s new (beta) “Learning Path” system (requires being logged in to see) is AMAZING – particularly for data science, for which Coursera has the most robust course selection (many from University of Michigan; Johns Hopkins University; and University of California, San Diego). Note: despite all the classes being free, many will only show an option to start your free 7-day trial or “enroll.” Just click enroll and select the “audit” option to take the class for free.

(Free online; NOT free Book). While the site is free, I personally found the book to be a helpful resource, and encourage you to consider supporting the author with the bound book: The Hitchhiker’s Guide to Python: Best Practices for Development . This book doesn’t really try to teach Python, but rather offers best practices, tips/tricks/gotchas, and how/when/why to use different tools. Optional: Geeks for Geeks ( medium ) : The same resource listed under the basic section, but with more advanced topics.

Expert

Must! : Make a recommendation for what should go here in the comments below!

Make a recommendation for what should go here in the comments below! Recommended : Fluent Python: Clear, Concise, and Effective Programming by Luciano Ramalho (Book; NOT free). The most useful amazon review describes this perfectly: “As the title and description suggest, this book truly is to achieve ‘fluency’ in Python. It touches on nearly every point of the language that is pythonic, describing not just the how and the what, but the why. This book is definitely not a good beginner book for Python (however, someone extremely well versed in Java or C++ could probably benefit from it, if they relied on more basic information from alternative sources), but I wouldn’t say it’s only for expert users. This book touches on a very wide selection of subjects, from some pretty common Python concepts, like Duck Typing, generators, and function and class decorators to more advanced subjects like abstract base classes, multiple inheritance, mixins, and meta programming. The prose is easy to read and even entertaining. It may be the first programming book I read for enjoyment, and not just reference.” For those of you looking for a preview of the book first, here is a link to a pre-publishing pdf.

by Luciano Ramalho (Book; NOT free). The most useful amazon review describes this perfectly: “As the title and description suggest, this book truly is to achieve ‘fluency’ in Python. It touches on nearly every point of the language that is pythonic, describing not just the how and the what, but the why. This book is definitely not a good beginner book for Python (however, someone extremely well versed in Java or C++ could probably benefit from it, if they relied on more basic information from alternative sources), but I wouldn’t say it’s only for expert users. This book touches on a very wide selection of subjects, from some pretty common Python concepts, like Duck Typing, generators, and function and class decorators to more advanced subjects like abstract base classes, multiple inheritance, mixins, and meta programming. The prose is easy to read and even entertaining. It may be the first programming book I read for enjoyment, and not just reference.” For those of you looking for a preview of the book first, here is a link to a pre-publishing pdf. Optional: Geeks for Geeks ( hard and expert ) : The same resource listed under the basic/intermediate sections, but with more advanced topics.

Practice, Practice, Practice [for all levels]

The resources above are all very educational and useful on the way to becoming a Python expert, but without practice putting those tools to work, it’s unlikely that a lot of your newfound knowledge will stick. The best way to practice, in my opinion, is to have your own projects to struggle with, but in case you don’t have any current project ideas or time, here are some other ways to practice your code: