Een contextmanager in Python is een object dat definieert wat er moet gebeuren aan het begin en einde van een blok code. Het wordt meestal gebruikt in combinatie met het ‘with’-statement.
Het klassieke voorbeeld is het werken met bestanden: je wil een bestand openen, daar iets mee doen en het vervolgens weer sluiten. Als er tijdens het werken met het bestand een fout optreedt, wil je nog steeds zeker weten dat het bestand gesloten wordt. Een contextmanager kan dit garanderen.
In code ziet dit er als volgt uit:
```
with open(‘file.txt’, ‘r’) as my_file:
data = my_file.read()
```
In dit geval is `open(‘file.txt’, ‘r’)` de contextmanager. Aan het begin van het ‘with’-blok opent het het bestand. Aan het einde van het blok, zelfs als er een fout is opgetreden in de code daarbinnen, sluit het gegarandeerd het bestand.
Een object wordt een contextmanager door de speciale methoden `__enter__` en `__exit__` te definiëren. De `__enter__` methode wordt aangeroepen aan het begin van het ‘with’-blok en de `__exit__` wordt aangeroepen aan het einde.