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Сообщить о неточности