Этот вопрос проверяет понимание работы с ресурсами в Python, таких как файлы или соединения, которые требуют корректного закрытия.
Контекстный менеджер в Python управляет ресурсами, обеспечивая их автоматическое освобождение. Например, с помощью конструкции with open('file.txt') as f: файл будет автоматически закрыт после завершения блока.
Контекстный менеджер — это объект, который управляет ресурсами с помощью методов __enter__ и __exit__. Он гарантирует выполнение важного кода, такого как освобождение памяти, закрытие соединений или файлов, даже если внутри блока возникнет исключение.
Пример:
with open('example.txt', 'r') as file:
data = file.read()
# Здесь файл уже закрыт, даже если была ошибка в блоке. Вы также можете создавать собственные контекстные менеджеры:
class MyManager:
def __enter__(self):
print("Entering context")
return self
def __exit__(self, exc_type, exc_value, traceback):
print("Exiting context")
with MyManager() as manager:
print("Inside context") Контекстные менеджеры широко применяются для работы с файлами, потоками, соединениями с базой данных и другими ресурсами, требующими четкого контроля.