A Python learning and reference site
Learn Python deliberately. Look things up precisely.
Every important concept here is reachable two ways: as a guided lesson that builds a mental model step by step, and as a reference entry you can jump straight to when you already half-remember it. Core content works without client-side JavaScript, and every example states which Python version it was verified against — and whether it's a language guarantee or a CPython-specific detail.
A beginner's path, start to finish
This is a focused, Beginner-only site: eleven modules and three projects that take you from no prior programming experience to writing reliable, tested Python scripts and packages.
Learn
Names and values, control flow, functions and scope, collections, files, modules, classes, and testing — eleven modules, in order.
Projects
Three portfolio-quality projects that combine the modules: a CLI program, a data-driven analyzer, and an installable package.
Reference
Syntax, built-ins, standard-library modules, exceptions, and patterns — scannable on their own, and linked back to the lesson that teaches each one in context.
Try a prediction question
Lessons regularly ask you to predict what a short program will do before you find out — a habit that builds a real mental model instead of pattern-matching on syntax.
Or reveal the answer without checking
Answer:["apple", "banana"]
Default argument values are evaluated once, when the function is defined — not on every call. basket=[] creates a single list object that every call without an explicit basket argument shares and mutates, so the "apple" from the first call is still there on the second. This is why lessons teach basket=None with a fresh list created inside the function body instead.
Who this is for
You're new to programming
Start at the top of the curriculum — every concept is introduced before it's used, and nothing assumes prior experience with another language.
You know another language
Skim for what's actually distinctive about Python — significant indentation, dynamic typing, names bound to objects rather than boxes holding values — then jump to whichever module covers your actual gap.
You need a precise answer now
Skip the lessons and go straight to Reference — every entry is scannable on its own and links back to the lesson that teaches it in context.
How the site is organized
Lessons follow a consistent shape: why it matters, a mental model, worked examples, common mistakes, guided and independent practice, and a summary of durable rules of thumb. Reference pages lead with a one-sentence purpose and a minimal example, then cover signature, exceptions raised, edge cases, and whether the behavior described is a language guarantee or a CPython-specific detail. Content is readable at any zoom level, fully usable by keyboard, and never relies on color alone to convey meaning.