Table of Contents
- Getting started, one environment per project
- Pythonic syntax, common pitfalls and style guide
- Containers and collections
- Functional programming, readability versus brevity
- Decorators, enabling code reuse by decorating
- Generators and coroutines, infinity, one step at a time
- Async IO, multithreading without threads
- Metaclasses, making classes (not instances) smarter
- Documentation, reStructuredText, Napoleon and how to use Sphinx
- Testing and logging, preparing for bugs
- Debugging, solving the bugs
- Performance, tracking and reducing your memory and cpu usage
- Multiprocessing, when a single cpu core is not enough
- Extensions in C/C++, system calls and C/C++ libraries
- Packaging, creating your own libraries/applications

