Four behaviours that prose is genuinely bad at explaining. Each one steps forwards and backwards, with the code highlighted as it runs and every input editable - the same player as the DSA visualizer, pointed at Python semantics instead of algorithms.
Why `b = a` then `b.append(4)` changes `a` - drawn as names, objects and refcounts.
Run the same workload with threads, processes and asyncio - then remove the GIL.
Watch C3 resolve a diamond - including the case where Python refuses.
See the SQL a loop actually emits, then watch select_related collapse it to one.