Context Manager (менеджер контекста)
Тип, предоставляющий возможность управления контекстом исполнения.
Управляющий контекстом (он же менеджер) следит за инициализацией и финализацией данного контекста, в частности определяет действия которые должны происходить до и после выполнения блока кода.
Обычно используется совместно с инструкцией with, позволяющей выполнение описанного в ней блока в некотором контексте исполнения. Однако не возбраняется и прямое обращение к методам менеджера.
Менеджеры контекста часто используются в задачах сходных с:
В сущности, признаком принадлежности к типу является следование протоколу контекстного менеджера , характеризующемуся наличием реализаций у пользовательского типа двух методов:
Удобным инструментом для реализации протокола менеджера являются генераторы и декоратор
Обычно используется совместно с инструкцией with, позволяющей выполнение описанного в ней блока в некотором контексте исполнения. Однако не возбраняется и прямое обращение к методам менеджера.
Менеджеры контекста часто используются в задачах сходных с:
- сохранением и восстановлением глобального состояния;
- блокировкой и разблокировкой ресурсов;
- открытием и закрытиям файлов.
В сущности, признаком принадлежности к типу является следование протоколу контекстного менеджера , характеризующемуся наличием реализаций у пользовательского типа двух методов:
На заметку
В стандартной поставке Python имеются встроенные менеджеры контекста для таких задач как: синхронизация нитей, закрытие файлов и других объектов, упрощенное управление контекстом десятичной арифметики. См. модуль contextlib.
Удобным инструментом для реализации протокола менеджера являются генераторы и декоратор
contextlib.contextmanager
. Если функцию-генератор обернуть в данный декоратор, то вместо итератора вернётся менеджер контекста, с уже определёнными методами __enter__()
и __exit__()
.
Синонимы поиска: Context Manager (менеджер контекста), контекстный менеджер
В разделе «type (тип)»:
basestring
Callable (вызываемый)
Container (контейнер)
Descriptor (дескриптор)
Iterator (итератор)
Number (число)
object (объект)
type.__abstractmethods__
type.__base__
type.__bases__
type.__basicsize__
type.__dict__
type.__dictoffset__
type.__doc__
type.__flags__
type.__itemsize__
type.__module__
type.__mro__
type.mro
type.__name__
type.__sizeof__
unicode (юникод)
На заметку
Зарегистрированные пользователи могут получать еженедельный дайджест обновлений на сайте.