Контекстный менеджер и with
Python
Middle
Сбербанк
Что такое контекстный менеджер в Python и как работает конструкция with? На примере работы с файлом объясните, что происходит.
Ответы
Контекстный менеджер
Контекстный менеджер — объект, у которого есть методы __enter__ и __exit__.
Конструкция:
```python
with open("file.txt") as f:
data = f.read()
```
Работает так:
1) Вызывается open(), создаётся объект файла.
2) Вызывается f.__enter__(), его результат попадает в переменную f.
3) Выполняется тело блока with.
4) В конце (даже при исключении) вызывается f.__exit__(), который закрывает файл.
Это гарантирует корректное освобождение ресурсов.