Python Glossary English

все Python 3contextlibпонятие

contextlib

модуль

Инструменты для менеджеров контекста и оператора with: contextmanager, suppress, ExitStack.

Синтаксис

import contextlib

Модуль избавляет от написания класса с __enter__ и __exit__: декоратор @contextmanager превращает генератор с одним yield в менеджер контекста. Здесь же готовые suppress для игнорирования исключения, redirect_stdout и ExitStack для заранее неизвестного числа ресурсов. Частая ошибка — не обернуть yield в try/finally: тогда при исключении внутри with уборка не выполнится.

Примеры

from contextlib import contextmanager, suppress
@contextmanager
def tag(name):
    print(f'<{name}>')
    try: yield
    finally: print(f'</{name}>')
with tag('b'): print('текст')  # → <b> / текст / </b>
with suppress(KeyError): {}['нет']

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности