title: Best Python Resources
category: page
slug: best-python-resources
sortorder: 0108
toc: False
sidebartitle: Best Python Resources
meta: Get recommendations for dozens of great programming tutorials via Full Stack Python's Best Python Resources page.


The Python community is amazing at sharing detailed resources and helping
beginners learn to program with the language. There are so many resources
out there though that it can be difficult to know how to find them. 

This page aggregates the best general Python resources with descriptions of
what they provide to readers.

<div class="well see-also">If you prefer to learn by watching videos check out the <a href="/best-python-videos.html">best Python videos</a>. You may also be interested in reading about <a href="/development-environments.html">development environments</a> to use for coding.</div>


## New to programming
If you're learning your first programming language these books were written
with you in mind. Developers learning Python as a second or later language
should skip down to the next section for "experienced developers".

* [TwilioQuest](https://www.twilio.com/quest/learn/python) is an free and 
  incredible 16-bit adventure game that teaches programming in the Python 
  basics mission. It's an absolutely way to stay engaged with the core 
  concepts that can often be otherwise dry to learn. There are also more 
  advanced missions to learn about 
  [web APIs](/application-programming-interfaces.html), and new 
  learning missions are added regularly on new programming topics.

* [Automate the Boring Stuff with Python](https://automatetheboringstuff.com/)
  is an incredible book for both non-developers and professional developers
  alike. Each chapter walks through a situation that can be automated using
  Python such as manipulating images, organizing your files and 
  programmatically controlling your mouse and keyboard to handle any sort
  of tasks.

* [CS for All](http://www.cs.hmc.edu/csforall/) is an open book by professors
  at Harvey Mudd College which teaches the fundamentals of computer science
  using Python. It's an accessible read and perfect for programming beginners.

* This [short 5 minute video](https://www.youtube.com/watch?v=mvK0UzFNw1Q)
  explains why it's better to think of projects you'd like to build and
  problems you want to solve with programming. Start working on those projects
  and problems rather than jumping into a specific language that's recommended
  to you by a friend.

* The [Python projects tag](https://www.twilio.com/blog/tag/python) on the 
  Twilio blog is constantly updated with fun tutorials you can build to
  learn Python, such as the
  [International Space Station Tracker with Flask and Redis-Queue](https://www.twilio.com/blog/2015/11/international-space-station-notifications-with-python-redis-queue-and-twilio-copilot.html), 
  [Choose Your Own Adventures Presentations using Flask and WebSockets](https://www.twilio.com/blog/2014/11/choose-your-own-adventure-presentations-with-reveal-js-python-and-websockets.html)
  and [Martianify Photos with OpenCV](https://www.twilio.com/blog/2015/11/getting-started-with-opencv-and-python-featuring-the-martian-2.html).

* Google put together a great compilation of materials and subjects you 
  should read and learn from if you want to be a 
  [professional programmer](https://www.google.com/about/careers/students/guide-to-technical-development.html).
  Those resources are useful not only for Python beginners but any developer
  who wants to have a strong professional career in software.

* The O'Reilly book 
  [Think Python: How to Think Like a Computer Scientist](http://greenteapress.com/thinkpython/html/index.html)
  is available in HTML form for free on the web.

* Looking for ideas about what projects to use to learn to code? Check out 
  [this list of 5 programming projects for Python beginners](https://knightlab.northwestern.edu/2014/06/05/five-mini-programming-projects-for-the-python-beginner/).

* [Python for you and me](http://pymbook.readthedocs.org/en/latest/) is an
  approachable book with sections for Python syntax and the major language 
  constructs. The book also contains a short guide at the end to get
  programmers to write their first Flask web application.


## Python for specific occupations
Python is powerful for many professions. If you're seeking to use Python in a
specific field, one of these guides may be the most appropriate for you.

* [Python for Social Scientists](http://www-rohan.sdsu.edu/~gawron/python_for_ss/)
  contains a textbook, course outline and slides for a college course that taught
  social scientists to use Python for their profession.

* [Practical Business Python](http://pbpython.com/) is a blog that covers topics
  such as how to automate generating large Excel spreadsheets or perform analysis 
  when your data is locked in Microsoft Office files.

* [Python for the Humanities](http://fbkarsdorp.github.io/python-course/) is a
  textbook and course on the basics of Python and text processing. Note if you've
  never worked with Python before the material ramps up quickly after the first
  chapter so you will likely want to combine it with some other introduction to
  Python resources.

* [Practical Python for Astronomers](https://python4astronomers.github.io/)
  provides open source workshop materials for teaching students studying 
  astronomy to use Python for data analysis.


## Experienced developers new to Python
If you can already program in another language, these resources are better for
getting up to speed because they are more concise when explaining introductory 
topics.

* [Learn Python in y minutes](http://learnxinyminutes.com/docs/python/)
  provides a whirlwind tour of the Python language. The guide is especially
  useful if you're coming in with previous software development experience
  and want to quickly grasp how the language is structured.

* [Developing a Real-Time Taxi App with Django Channels and Angular](https://testdriven.io/courses/real-time-app-with-django-channels-and-angular/?utm_source=fsp)
  is a great tutorial for jumping into a real project instead of a simple
  starter application while learning common Python concepts and tools such
  as [Django](/django.html), [Angular](/angular.html), 
  [WebSockets](/websockets.html) and [Redis](/redis.html).

* Developers familiar with other languages often have difficulty adapting to
  accepted Python code style. Make sure to read the 
  [PEP8](https://www.python.org/dev/peps/pep-0008/) code style guidelines
  as well as 
  [The Elements of Python Style](https://github.com/amontalenti/elements-of-python-style)
  to know the Python community standards.

* [Authentication with Flask, React, and Docker](https://testdriven.io/courses/auth-flask-react/?utm_source=fsp)
  is another detailed course that shows how to combine 
  [Flask](/flask.html), [React](/react.html), [Docker](/docker.html) 
  and [Heroku](/heroku.html) to build a solid intermediate-to-advanced
  web application and deploy it.

* [Essential Reads for Any Python Programmer](http://notesbyanerd.com/2017/12/29/essential-reads-for-any-python-programmer/)
  is a great collection of advice for developers coming to Python from another
  programming language ecosystem such as Java.

* [How to Develop Quality Python Code](https://districtdatalabs.silvrback.com/how-to-develop-quality-python-code)
  is a good read to begin learning about development environments, 
  application dependencies and project structure.

* The [Python module of the week](https://pymotw.com/2/contents.html) 
  chapters are a good way to get up to speed with the standard library.
  Doug Hellmann is also now updating the list for changes brought about 
  from the upgrade to Python 3 from 2.x.

* [Composing Programs](http://composingprograms.com/) shows how to build 
  compilers with Python 3, which is a good undertaking if you're looking
  to learn both more about the Python language and how compiles work.

* [free-for-dev](https://github.com/ripienaar/free-for-dev) is not specific
  to Python but it's a fantastic list of free tier resources for experienced
  developers. The list is especially handy if you want to try building a
  Python project and need new third party services to kick around while
  experimenting.


## Videos, screencasts and presentations
Videos from conferences and meetups along with screencasts are listed on
the [best Python videos](/best-python-videos.html) page.


## Curated Python packages lists
* [awesome-python](https://github.com/vinta/awesome-python) is an incredible
  list of Python frameworks, libraries and software. I wish I had this
  page when I was just getting started. 

* [easy-python](http://easy-python.readthedocs.org/en/latest/) is like
  awesome-python although instead of just a Git repository this site is
  in the Read the Docs format.

* [Hacker News Tools of the Trade](https://github.com/cjbarber/ToolsOfTheTrade)
  is not specific to Python but almost all of the tools and services are
  useful to building software projects.


## Podcasts
Take a look at the [best Python podcasts](/best-python-podcasts.html)
section for a curated list of both Python-specific and general software
development podcasts.


## Newsletters
Python's active community constantly publishes new tutorials and 
walkthroughs. It is easier to keep up if you follow along by subscribing
to several email newsletters that round up and curate the best new 
resources. I subscribe to all of the following newsletters and find that
each one has its own unique take on what resources are most important
to send out to the community.

* [Python Weekly](https://www.pythonweekly.com/) is a free weekly roundup
  of the latest Python articles, videos, projects and upcoming events.

* [PyCoder's Weekly](http://pycoders.com/) is another great free weekly
  email newsletter similar to Python Weekly. The best resources are generally
  covered in both newsletters but they often cover different articles
  and projects from around the web.

* [Talk Python's Friends of the Show](https://talkpython.fm/friends-of-the-show)
  always highlights new episodes of this wonderful 
  [podcast](/best-python-podcasts.html) as well as new useful tools to
  add to your developer toolbelt.

* [Awesome Python Newsletter](https://python.libhunt.com/newsletter) provides
  another solid selection of new and existing tutorials along with an extensive
  [issues archive](https://python.libhunt.com/newsletter/archive) with previous 
  links to resources.

