Тип, предоставляющий возможность управления контекстом исполнения.

Управляющий контекстом (он же менеджер) следит за инициализацией и финализацией данного контекста, в частности определяет действия которые должны происходить до и после выполнения блока кода.

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

Менеджеры контекста часто используются в задачах сходных с:
  • сохранением и восстановлением глобального состояния;
  • блокировкой и разблокировкой ресурсов;
  • открытием и закрытиям файлов.

В сущности, признаком принадлежности к типу является следование протоколу контекстного менеджера , характеризующемуся наличием реализаций у пользовательского типа двух методов:


На заметку
В стандартной поставке Python имеются встроенные менеджеры контекста для таких задач как: синхронизация нитей, закрытие файлов и других объектов, упрощенное управление контекстом десятичной арифметики. См. модуль contextlib.

Удобным инструментом для реализации протокола менеджера являются генераторы и декоратор contextlib.contextmanager. Если функцию-генератор обернуть в данный декоратор, то вместо итератора вернётся менеджер контекста, с уже определёнными методами __enter__() и __exit__().
Синонимы поиска: Context Manager (менеджер контекста), контекстный менеджер
На заметку
Зарегистрированные пользователи могут получать еженедельный дайджест обновлений на сайте.