Контекстный менеджер

Контекстный менеджер в Python - это объект, который реализует два метода, __enter__ и __exit__, и предоставляет блок кода, выполняемого в пределах контекста. Контекстные менеджеры часто используются для управления ресурсами, такими как открытие и закрытие файлов, установка и освобождение блокировок, управление транзакциями в базах данных и другие ситуации, где важно гарантировать корректное выполнение кода до и после определенного блока.

Пример использования контекстного менеджера с файлами:

# С использованием контекстного менеджера
with open('example.txt', 'r') as file:
    content = file.read()
    print(content)

# Блок выхода из контекста, файл автоматически закрыт

В данном примере open('example.txt', 'r') возвращает объект файла, который является контекстным менеджером. Когда код входит в блок with, вызывается метод __enter__ контекстного менеджера, который, в данном случае, открывает файл. После выполнения кода в блоке with, вызывается метод __exit__, который гарантирует корректное закрытие файла, даже если в блоке произошло исключение.

Вариант использования контекстного менеджера без with:

file = open('example.txt', 'r')
try:
    content = file.read()
    print(content)
finally:
    file.close()

Однако использование with более чисто и позволяет избежать явного закрытия ресурсов, так как это будет выполнено автоматически при выходе из блока with.

Last updated