Python Learning List
By: Cam Wohlfeil
Published: 2018-09-04 0030 EDT
Modified: 2018-09-09 2300 EDT
Category: Programming
Tags:
python
Recently a colleague asked me for Python recommendations and resources for learning. This is a tough question since the answer is different for everyone, but in general these are the resources I think are best or have helped me.
Tools
It's easy to get caught up learning new tools, frameworks, libraries, etc. but this can get distracting and frustrating. Go for simplicity and ease of use when starting, then move on to features later. Also, you should be learning Python 3, not Python 2.
- Anaconda Python makes getting Python running and maintaining packages a breeze.
- Jupyter Notebook, included with Anaconda.
- SublimeText, or Notepad++.
- Visual Studio Code, or Atom.
- PyCharm, although this is a bit too much for a beginner.
Beginner
Someone just starting Python, particularly someone with no prior experience in programming. When you're beginning it's best to stay focused on the fundamentals of writing and understanding code and how Python can help you right now.
-
Without a doubt the best recommendation I can give is Automate the Boring Stuff with Python. This book not only teaches you Python but does so while giving practical examples of how Python can help you right now. The book is online for free and there's a cheap Udemy course if you prefer video.
-
I love the Take Up Code podcast. Even when covering topics I already know, I find I understand the topic much better than I did before listening. It's more focused on C++ and general Computer Science topics, but what it teaches you is broadly applicable. You don't have to listen to everything, just pick and choose what you want now and come back later.
-
Reddit r/LearnPython and Reddit r/LearnProgramming are communities dedicated to helping people learn Python and programming respectively. These are good newbie friendly places to ask questions.
Apprentice
An apprentice is no longer a beginner, they are looking to start the journey towards mastery. While they understand the basics, they need to learn the tools of the trade, the advanced topics, and how to write good code.
-
Reading Fluent Python and Effective Python is what finally made programming 'click' for me and pushed my Python and programming skills to the next level.
-
I don't like making domain specific recommendations for a list like this, but The Flask Mega Tutorial is so amazing I think it's worth it, even if you don't have any interest in writing webapps. This takes you on a practical adventure of Python and general programming concerns and technologies, so it's well worth your time.
-
Talk Python to Me and Python Bytes podcasts are a fantastic way to learn from experts in a vast range of Python areas.
-
The Hitchhiker’s Guide to Python will get you up to speed o n everything you need to know to be a good Python programmer, but it may be a little daunting! Use this in addition to Fluent Python.
-
Real Python is chock full of fantastic articles on a wide range of Python related topics, follow any that catch your interest.
-
SentDex is a YouTuber who walks you through how to make some practical and interesting Python programs, as well as explains some more intermediate topics.
Journeyman
A journeyman is a confident programmer, ready to apply their skills and solve real world problems. They still have much to learn however, and the road to mastery involves expanding their skillset to general Computer Science topics.
-
Problem Solving with Algorithms and Data Structures using Python and additionally this Python algorithms repo helped me wrap my head around data structures and algorithms, which are critical components of understanding Computer Science and working with code.
-
Python Patterns, in addition to Python 3 Patterns, Recipes, and Idioms helped teach me about design patterns. While it may be hard to see the value in them without practical examples, these are very useful code patterns that show up time and again since they solve very common problems.
-
Working inside of Virtualenv, packaging, and distributing your code.
-
Functional Programming HOWTO and Functional Programming in Python to dip your toes into a different programming paradigm and really expand your knowledge and skills.
-
A different programming language, preferably a systems programming language like C, C++, or Rust (my personal favorite).
Master
An expert in the field and subject matter. I don't feel qualified to give recommendations to a person like this, but here's some general topics a person like this would be thinking about.
- Global Interpreter Lock (GIL)
- Concurrency, multiprocessing, threads, async
- Python Enhancement Proposals (PEPs)
- Interpreters (CPython, PyPy, Jython, etc.)
- Unicode
- Programming paradigms (functional, object-oriented, declarative, imperative, etc.)
- Architecture and design
- Type systems
- Microservices and monoliths
- Cache coherency
- Memory
- Test Driven Development, Automated Testing, and Continuous Integration