Learning Python is easy for many, but getting past an intermediate level can be frustrating, and many intermediate users are sometimes surprised by features they thought they understood.
This tutorial clarifies namespaces, compares patterns for structuring code (callbacks, decorators, coroutines, etc.), and explores Python bytecode, monkey patching, decorators, metaclasses, and descriptors.