Python Glossary English

Python 3.7+contextlibпонятие

contextlib.nullcontext

заглушка

Контекстный менеджер-заглушка, ничего не делающий. Полезен для условного использования КМ (Python 3.7+).

Синтаксис

contextlib.nullcontext(enter_result=None)

Смысл в том, чтобы не писать один и тот же блок кода дважды в ветках if/else, когда менеджер нужен лишь иногда. Частая ловушка: по умолчанию as-переменная получает None, поэтому если внутри блока ждут объект (например, файл), подставляйте его через enter_result. С Python 3.10 работает и как асинхронный контекстный менеджер.

Примеры

from contextlib import nullcontext
with nullcontext('value') as v:
    print(v) # → 'value'
from contextlib import nullcontext
def process(cm=None):
    with cm or nullcontext():
        return 42
print(process())  # → 42
print(process(nullcontext()))  # → 42

См. также

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