Что такое менеджеры контекста в Python
Python
Senior
Без компании
Что такое менеджеры контекста в Python
Ответы
Менеджеры контекста в Python — это объекты, которые определяют контекст выполнения блока кода с помощью методов `__enter__` и `__exit__`. Они гарантируют, что ресурсы будут правильно выделены и освобождены, даже если возникнет исключение.
Самый распространённый пример — работа с файлами через `with`:
```
with open('file.txt', 'r') as f:
data = f.read()
# файл автоматически закрывается здесь
```
Эквивалентно:
```
f = open('file.txt', 'r')
try:
data = f.read()
finally:
f.close()
```
Можно создавать свои менеджеры контекста через классы или `contextlib`:
```
from contextlib import contextmanager
@contextmanager
def timer():
start = time.time()
yield
print(f"Time: {time.time() - start}")
with timer():
# код для замера времени
```
Ключевые преимущества: безопасность ресурсов, чистота кода и обработка исключений в `__exit__`.