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