Python in Practice
Bridge the gap between basic syntax and professional Python. Learn to write clean, idiomatic code while dodging common traps in memory, mutability, and error handling.
Like Duolingo, but for Python in Practice. Tomo turns the whole topic into a game you play five minutes a day, until it actually sticks.
24 levels across 3 sections, about 48 minutes end to end, roughly 10 days at five minutes a day. It moves through Writing Idiomatic Python, Avoiding Common Pitfalls, and Structuring Real-World Code. It assumes you already know the basics.
Free forever · No credit card · iPhone & Android

Key ideas in Python in Practice
- zip(*iterables) yields paired tuples across multiple collections simultaneously
- enumerate(iterable) provides a running counter alongside items from a single collection
- zip avoids off-by-one errors and manual range(len(...)) index lookups
- Extended iterable unpacking with * collects remaining elements into a list
- The union operator | merges dicts, letting right-hand keys overwrite left-hand duplicates
- Sequence unpacking (*items) inside a literal concatenates iterables without calling .extend()
- defaultdict automatically invokes a factory callable when accessing missing keys
- dict.get(key, default) returns a fallback value but does not insert it into the dict
- Using defaultdict eliminates boilerplate membership checks before mutating nested values
- any() halts iteration and returns True the moment it encounters a truthy item
- all() halts immediately upon encountering the first falsy element in an iterable
- Pairing any() or all() with generator expressions avoids evaluating the entire collection
- Appending an equals sign like f'{variable=}' prints both the variable expression and its value
- Inline format specifiers like f'{price:.2f}' round and format numbers directly in the string
- Date format directives like f'{timestamp:%Y-%m-%d}' format datetime objects inside f-strings
- A function with yield pauses execution and emits one item without building a list in memory.
You've tried the other tabs
Thirty open tabs. Four facts you actually kept.
You watched. You nodded. By Sunday it was gone.
One answer, then back to scrolling.
Eight weeks. You meant to finish. You didn't.
Tomo gives Python in Practice the Duolingo treatment: levels, streaks, and quick quizzes that test what you just learned. That game loop is what the tabs above never had, so it's the one you actually finish.
Here's what playing it feels like
A real question from this course. Take your best guess.
Imagine looping over a guest list and you need to display each person's arrival number alongside their name. What tool hands you both?
Get it right to open this lesson and 23 more in the app.
How to learn Python in Practice, step by step
Go in order. 24 short levels across 3 sections, about 48 minutes in all, five minutes a day.
- 1
Writing Idiomatic Python
- Pythonic Patterns and Shortcuts
- Iteration and Streaming Datasets
- 2
Avoiding Common Pitfalls
- Object Mutability and Scope Traps
- Defensive Exception Handling
- Resource Management with Context Managers
- 3
Structuring Real-World Code
- Clean Data Modeling
- Function Decorators and Signatures
- Type Hinting and Environment Hygiene
3 sections · 8 units · 24 levels. Built to play, not to enroll.
Questions about Python in Practice
How do I learn Python in Practice?
Go in order: start with Writing Idiomatic Python, then Avoiding Common Pitfalls, then Structuring Real-World Code. On Tomo that's 24 short levels, about 48 minutes in all, played five minutes a day. Start free and play the first level in under a minute.
Is there a Duolingo-style app for Python in Practice?
Yes. Tomo works like Duolingo: short daily lessons, streaks and quick quizzes. Python in Practice is one of its free courses, and you can type any other topic to get a course of your own.
Is the Python in Practice course free?
Yes. Python in Practice is playable on Tomo's free plan, which doesn't expire. No credit card, no waitlist. Download the app and start your first lesson.
How long does it take to learn Python in Practice?
24 levels across 3 sections, about 48 minutes of play in total. It's built for five minutes a day, so you finish it a little at a time instead of all at once.
Do I need any background to start Python in Practice?
No. It's pitched at an intermediate level, so it starts where you are and builds up. If you can tap a phone, you can start.
Tomo is in ChatGPT
Tomo is also a ChatGPT plugin: the same playable courses, built and played inside your chat.
Add Tomo to ChatGPT- What to ask
- “Make me a Tomo course on black holes.” “Turn this chat into a Tomo course.”
- What you get
- Quick questions with instant feedback, hearts and stars, ready to play in about a minute.
- Where it goes
- No sign-up to start. Connect your Tomo account and your streak carries on in the app.
You pick the voice
Python in Practice is taught in the Storyteller style: every lesson is a story. Want a different feel? In the app you can spin up the same topic in any of Tomo's teaching styles. Same facts, totally different vibe.
More Technology on Tomo
Writing Idiomatic Python
Bridge the gap between working code and clean, Pythonic engineering. Learn to write expressive data transforms, robust object models, memory-efficient streams, and reusable decorators.
C++: Foundations and Pitfalls
Build a robust mental model of C++ from your first program to complex systems. Uncover the subtle language traps and memory quirks that catch even experienced programmers.
Data Structures in Practice
Discover how real software organizes, stores, and accesses data at scale. Explore everyday structures like hash maps, trees, and queues, and learn to make fast, reliable architectural choices.
Python from Scratch
Learn to write real, working Python code to automate repetitive tasks, analyze information, and build your own applications. Master core syntax, data structures, and practical libraries through hands-on logic.
Data Science for Real People
Stop staring at spreadsheets and start telling stories with data. Learn to solve real-world problems using Python, SQL, and visual tools while mastering the art of the data-driven decision.
Python Programming for Beginners
Stop reading about code and start writing it. Build your first programs immediately and learn how to think like a developer to solve real-world problems.
Start Python in Practice today.
Download Tomo, search Python in Practice, and play your first lesson in under a minute.