Learning path
Python learning path: everything to study, topic by topic
Comprehensive Python assessment covering fundamentals through expert-level topics including async programming, metaclasses, and CPython internals.
Short answer
To learn Python, work through 6 modules and 49 topics in the order they build on each other. It starts with Fundamentals, then moves on to Data Structures and OOP & Design. Use the map as a checklist, or measure your level and study only what is missing.
What you will study
Topics are grouped by module. Open one to see its objectives and key concepts.
1 · Fundamentals9 topics
Python Syntax
Basic Python syntax rules, indentation, comments, and program structure
Objectives
- Write syntactically valid Python
- Understand indentation rules
Key concepts
- indentation
- comments
- line continuation
- semicolons
- pass statement
Variables & Data Types
Variable assignment, naming, primitive types (int, float, str, bool, None), type conversion
Objectives
- Explain dynamic typing
- Convert between types correctly
Key concepts
- dynamic typing
- type()
- isinstance()
- type casting
- None
- mutability
Control Flow
if/elif/else, for loops, while loops, break, continue, match/case
Objectives
- Write correct conditional logic
- Use loops effectively with itertools
Key concepts
- if/elif/else
- for loops
- while loops
- break/continue
- range()
- enumerate()
- zip()
- match/case
Functions
Function definition, arguments, return values, scope, *args/**kwargs, lambda
Objectives
- Define functions with various argument types
- Explain Python scoping rules
Key concepts
- def
- return
- default arguments
- *args/**kwargs
- lambda
- scope (LEGB)
- docstrings
- first-class functions
String Operations
String methods, formatting (f-strings, .format), slicing, encoding
Objectives
- Manipulate strings with built-in methods
- Use f-strings effectively
Key concepts
- f-strings
- .format()
- slicing
- split/join
- strip()
- replace()
- encoding/decoding
File Handling & I/O
open(), context managers for files, JSON/CSV/YAML reading and writing, pathlib, binary files
Objectives
- Read and write files safely
- Parse structured data formats
Key concepts
- open()
- context managers for files
- JSON reading/writing
- CSV reading/writing
- YAML reading/writing
- pathlib
- binary files
Data Structures & Algorithms
Arrays, linked lists, hash tables, stacks, queues, trees, sorting, searching, and complexity
Objectives
- Analyze time and space complexity of algorithms
- Choose appropriate data structures for different problems
Key concepts
- arrays and lists
- linked lists
- hash tables
- stacks and queues
- binary trees
- sorting algorithms
- searching algorithms
- time complexity
Type Casting & Conversion
Explicit and implicit type conversion, casting functions, coercion rules, and common pitfalls
Objectives
- Convert between Python types safely
- Predict the result of implicit and explicit type conversions
Key concepts
- int()
- float()
- str()
- bool()
- implicit vs explicit casting
- type coercion rules
- casting errors
Lambda Expressions
Lambda syntax, anonymous functions, map/filter/reduce, sorting with lambda, functional style
Objectives
- Write concise lambda expressions for inline operations
- Decide when lambda is appropriate vs a named function
Key concepts
- lambda syntax
- anonymous functions
- map/filter/reduce
- lambda vs def
- sorting with lambda
- lambda limitations
- functional style
2 · Data Structures5 topics
Lists & Tuples
List/tuple operations, methods, slicing, unpacking, named tuples
Objectives
- Choose between lists and tuples
- Use slicing and unpacking
Key concepts
- list methods
- tuple immutability
- slicing
- unpacking
- sorted()
- namedtuple
- list vs tuple performance
Dictionaries & Sets
Dict operations, set operations, defaultdict, OrderedDict, hashability
Objectives
- Use dictionaries for data lookup
- Understand hashability requirements
Key concepts
- dict methods
- set operations
- hashability
- dict comprehensions
- .get()
- .setdefault()
- dict unpacking (**)
Collections Module
defaultdict, Counter, deque, ChainMap, and specialized containers
Objectives
- Choose the right collection type for each use case
Key concepts
- defaultdict
- Counter
- deque
- ChainMap
- OrderedDict
- namedtuple
Comprehensions
List, dict, set comprehensions, nested comprehensions, generator expressions
Objectives
- Rewrite loops as comprehensions
- Know when comprehensions hurt readability
Key concepts
- list comprehension
- dict comprehension
- set comprehension
- nested comprehension
- generator expression
- conditional comprehension
Regular Expressions
re module, match/search/findall, groups, lookahead/lookbehind, compile, substitution
Objectives
- Write and debug regular expressions
- Choose between regex and string methods
Key concepts
- re module
- match/search/findall
- groups
- lookahead/lookbehind
- re.compile
- substitution
3 · OOP & Design5 topics
Classes & Inheritance
Class definition, __init__, inheritance, super(), MRO, class vs instance attributes
Objectives
- Design class hierarchies
- Understand MRO and super()
Key concepts
- __init__
- self
- inheritance
- super()
- MRO
- class attributes vs instance attributes
- multiple inheritance
Magic Methods
Dunder methods: __repr__, __str__, __eq__, __hash__, __len__, __getitem__, protocols
Objectives
- Implement Python protocols via dunder methods
Key concepts
- __repr__
- __str__
- __eq__/__hash__
- __len__
- __getitem__
- __contains__
- __iter__
- operator overloading
Design Patterns
Common patterns in Python: Singleton, Factory, Strategy, Observer, Iterator
Objectives
- Apply common design patterns in Python idiomatically
Key concepts
- Singleton
- Factory
- Strategy
- Observer
- Iterator
- Decorator pattern vs @decorator
SOLID Principles
Single responsibility, Open/Closed, Liskov substitution, Interface segregation, DI
Objectives
- Identify SOLID violations and refactor accordingly
Key concepts
- Single Responsibility
- Open/Closed
- Liskov Substitution
- Interface Segregation
- Dependency Inversion
- ABC
Dataclasses
@dataclass decorator, field(), frozen dataclasses, __post_init__, inheritance, slots=True
Objectives
- Create dataclasses for structured data with minimal boilerplate
- Use frozen and slots options for immutability and performance
Key concepts
- @dataclass decorator
- field() function
- frozen dataclasses
- __post_init__
- dataclass inheritance
- slots=True
- comparison and ordering
4 · Advanced Python7 topics
Closures & Scoping
Closures, free variables, nonlocal keyword, functools.partial
Objectives
- Explain what a closure captures
- Avoid late-binding pitfalls
Key concepts
- closure
- free variables
- nonlocal
- late binding
- functools.partial
- cell objects
Decorators
Function decorators, class decorators, @wraps, parameterized decorators, stacking
Objectives
- Write decorators with and without arguments
- Understand wraps()
Key concepts
- @decorator
- functools.wraps
- parameterized decorators
- class decorators
- decorator stacking order
Generators & Iterators
yield, generator functions, generator expressions, itertools, lazy evaluation
Objectives
- Use generators for memory-efficient processing
- Chain generators
Key concepts
- yield
- yield from
- generator expression
- itertools
- lazy evaluation
- StopIteration
- __iter__/__next__
Async / Await
asyncio, coroutines, event loop, async generators, aiohttp patterns
Objectives
- Write concurrent I/O with asyncio
- Avoid common async pitfalls
Key concepts
- async def
- await
- asyncio.gather
- event loop
- async context manager
- async generator
- asyncio.Queue
Context Managers
with statement, __enter__/__exit__, contextlib, custom context managers
Objectives
- Implement context managers for resource cleanup
Key concepts
- __enter__
- __exit__
- contextlib.contextmanager
- contextlib.suppress
- nested context managers
Metaclasses
type(), __new__, __init_subclass__, metaclass programming, class creation flow
Objectives
- Explain when metaclasses are appropriate
- Trace class creation flow
Key concepts
- type()
- __new__
- __init_subclass__
- metaclass=
- class creation order
- __prepare__
GIL (Global Interpreter Lock)
GIL purpose, impact on threading, CPU-bound vs I/O-bound, releasing the GIL, alternatives
Objectives
- Explain why the GIL exists and its impact on concurrency
- Choose between threading and multiprocessing based on workload type
Key concepts
- GIL purpose
- GIL impact on threading
- CPU-bound vs I/O-bound
- releasing the GIL
- multiprocessing as alternative
- C extensions and GIL
- GIL-free Python proposals
5 · Ecosystem & Tooling13 topics
Packaging & Dependencies
pip, venv, pyproject.toml, setuptools, poetry, dependency management
Objectives
- Set up a Python project with proper packaging
Key concepts
- venv
- pip
- pyproject.toml
- setuptools
- poetry
- wheel
- requirements.txt
- dependency resolution
Testing
pytest, unittest, mocking, fixtures, parametrize, coverage
Objectives
- Write effective tests with pytest
- Use mocking correctly
Key concepts
- pytest
- fixtures
- parametrize
- mock.patch
- assert
- conftest.py
- coverage
Type Hints
Type annotations, typing module, Generic, Protocol, TypeVar, mypy
Objectives
- Add type hints to codebases
- Understand structural subtyping
Key concepts
- type annotations
- typing.Optional
- typing.Union
- Generic
- Protocol
- TypeVar
- mypy
- runtime vs static checks
Error Handling
Exception hierarchy, custom exceptions, try/except/finally patterns, EAFP vs LBYL
Objectives
- Design exception hierarchies
- Choose EAFP vs LBYL
Key concepts
- try/except/else/finally
- custom exceptions
- exception chaining
- BaseException vs Exception
- EAFP vs LBYL
- exception groups
Django Basics
MTV pattern, ORM, views, URLs, middleware, admin, and project configuration
Objectives
- Build web applications with Django
- Understand the MTV architecture
Key concepts
- MTV pattern
- ORM
- views
- URL routing
- middleware
- admin
- settings
Flask Basics
Routes, decorators, request context, Blueprints, Jinja2 templates, and Flask extensions
Objectives
- Build lightweight web applications with Flask
- Understand request context
Key concepts
- routes
- decorators
- request context
- Blueprints
- Jinja2
- Flask extensions
FastAPI
Path operations, Pydantic models, dependency injection, async endpoints, OpenAPI docs
Objectives
- Build modern async APIs with FastAPI
- Leverage automatic docs and validation
Key concepts
- path operations
- Pydantic models
- dependency injection
- async endpoints
- OpenAPI docs
mypy & Pydantic
mypy strict mode, pyright, Pydantic BaseModel, validators, field types, serialization
Objectives
- Enforce type safety with mypy
- Validate data with Pydantic models
Key concepts
- mypy strict mode
- pyright
- Pydantic BaseModel
- validators
- field types
- serialization
Code Quality Tools
Ruff, Black, isort, flake8, pre-commit hooks, and linting configuration
Objectives
- Set up automated code quality tooling
- Configure linting for a team
Key concepts
- Ruff
- Black
- isort
- flake8
- pre-commit hooks
- linting configuration
Virtual Environments & uv
venv, virtualenv, uv, pyproject.toml, Poetry, pip-tools, and dependency resolution
Objectives
- Manage Python environments effectively
- Resolve dependency conflicts
Key concepts
- venv
- virtualenv
- uv
- pyproject.toml
- Poetry
- pip-tools
- dependency resolution
Standard Library Modules
os, pathlib, sys, datetime, itertools, functools, math, statistics, json, csv modules
Objectives
- Use standard library modules to avoid reinventing the wheel
- Choose the right module for common tasks
Key concepts
- os and pathlib
- sys module
- datetime and time
- itertools
- functools
- math and statistics
- json and csv
Package Managers
pip, requirements.txt, Poetry, Conda, uv, pdm, dependency resolution, and lock files
Objectives
- Compare and select the right package manager for a project
- Manage dependencies reproducibly with lock files
Key concepts
- pip basics
- requirements.txt
- Poetry
- Conda
- uv package manager
- pdm
- dependency resolution
- lock files
Debugging & Profiling
pdb debugger, breakpoint(), logging module, cProfile, line_profiler, traceback analysis
Objectives
- Debug Python code systematically using built-in tools
- Profile applications to identify performance bottlenecks
Key concepts
- pdb debugger
- breakpoint()
- logging module
- cProfile
- line_profiler
- traceback analysis
- IDE debugging
6 · Expert Topics10 topics
CPython Internals
GIL, reference counting, garbage collection, bytecode, C extensions
Objectives
- Explain GIL implications
- Read bytecode output
Key concepts
- GIL
- reference counting
- gc module
- bytecode (dis)
- C extensions
- PyObject
- memory management
Concurrency Patterns
threading, multiprocessing, concurrent.futures, async coordination patterns
Objectives
- Choose between threading, multiprocessing, and asyncio
Key concepts
- threading.Thread
- multiprocessing.Process
- concurrent.futures
- ThreadPoolExecutor
- ProcessPoolExecutor
- locks/semaphores
- asyncio.gather vs TaskGroup
Performance Optimization
Profiling, caching, algorithmic complexity, memory optimization, Cython hints
Objectives
- Profile and optimize Python code
- Reduce memory footprint
Key concepts
- cProfile
- line_profiler
- functools.lru_cache
- slots
- intern()
- memory_profiler
- algorithmic complexity
Multiprocessing
Process class, Pool and map, shared memory, Queue and Pipe, fork vs spawn, ProcessPoolExecutor
Objectives
- Implement parallel processing with multiprocessing
- Choose between fork and spawn start methods
Key concepts
- Process class
- Pool and map
- shared memory
- Queue and Pipe
- process synchronization
- fork vs spawn
- ProcessPoolExecutor
Python C Extensions & ctypes
Writing C extensions with ctypes, cffi, and the Python/C API for performance-critical code
Objectives
- Build a C extension using ctypes
- Explain Python/C API memory semantics
Key concepts
- ctypes
- cffi
- Python/C API
- PyArg_ParseTuple
- Py_INCREF/DECREF
- CFFI ABI mode
- Cython
Custom asyncio Protocols & Transports
Implementing custom asyncio transports and protocols for low-level network communication
Objectives
- Implement a custom asyncio Protocol and Transport
- Explain the event loop callback and scheduling model
Key concepts
- asyncio.Protocol
- asyncio.Transport
- create_connection
- BufferedProtocol
- StreamReader
- event loop internals
Security & Safe Deserialization
Identifying and mitigating Python deserialization vulnerabilities in pickle, yaml, and eval
Objectives
- Identify unsafe deserialization patterns and their exploits
- Apply safe alternatives across pickle, yaml, and eval contexts
Key concepts
- pickle security
- yaml.safe_load
- eval injection
- __reduce__
- restricted execution
- input validation
Memory Profiling & Leak Detection
Using memory_profiler, tracemalloc, and objgraph to identify and fix memory leaks in Python apps
Objectives
- Use tracemalloc and objgraph to locate memory leaks
- Apply __slots__ and weak references to reduce memory pressure
Key concepts
- tracemalloc
- memory_profiler
- objgraph
- weak references
- reference cycles
- __slots__
- gc.get_referrers
Python Observability & OpenTelemetry
Instrumenting Python applications with OpenTelemetry for distributed tracing, metrics, and logs
Objectives
- Instrument a Python service with OpenTelemetry spans and metrics
- Configure context propagation across async boundaries
Key concepts
- OpenTelemetry SDK
- spans and traces
- context propagation
- OTLP exporter
- auto-instrumentation
- custom metrics
- structured logging
Custom AST Manipulation
Using Python's ast module to parse, analyze, and transform code for static analysis and code generation
Objectives
- Write a NodeVisitor to collect metrics from a Python AST
- Implement a NodeTransformer to rewrite function calls
Key concepts
- ast.parse
- ast.NodeVisitor
- ast.NodeTransformer
- ast.unparse
- code generation
- linters
- macro-like transforms
Levels: Junior, Mid, Senior, and Expert
Explain it in your own words
Graded by AI · no account · 1 questionNo options to guess from: you write, the AI grades against the topic's rubric and tells you what level your answer reads at.
Already studying Python?
The assessment measures topic by topic, and your plan skips what you already know.
Open to read. An account is only needed to be measured.
Frequently asked questions
Where should I start studying Python?
Start with Fundamentals: Python Syntax, Variables & Data Types, and Control Flow. The map orders topics by what they depend on, so each one prepares the next.
How long does a full Python assessment take?
A full assessment of this path takes about 45 minutes. Study time depends on where you start; a diagnostic shows which topics you can skip.
Do I need an account to use this page?
No. The map, objectives and key concepts are open. You only need an account to be measured, get your gap by topic and receive a plan.