Thinking in Python Bruce Eckel Thinking in Python Insights, Idioms and Patterns 01 Introduction Part I · Foundations 02 Tour 03 Containers 04 Control Flow 05 Functions 06 Modules and Packages 07 Classes 08 Static Typing 09 Class Attributes 10 Cleanup Part II · Techniques 11 Testing 12 Data Classes as Types 13 Pattern Matching 14 Decorators 15 Context Managers 16 Comprehensions 17 Metaprogramming 18 Performance 19 Concurrency Part III · Patterns 20 Rethinking Objects 21 The Pattern Concept 22 Data Transfer Objects 23 Iterators 24 Singleton 25 Template Method 26 Surrogate 27 Factory 28 Function Objects 29 Changing the Interface 30 Observer 31 State Machines 32 Multiple Dispatching 33 Visitor 34 Composite and Interpreter 35 Flyweight 36 Memento 37 Pattern Refactoring 38 Simulation 39 Pattern Catalog Part IV · Functional Programming 40 Foundations 41 Toolkits 42 Error Handling 43 Assurance Part V · Effects 44 Effect Management 45 Generators 46 Stateless 47 Stateless in Practice © 2026 Bruce Eckel. Licensed CC BY-NC-ND 4.0 . Freely readable online. No reproduction without permission. Book Examples & Exercise Solutions on GitHub