Python Glossary English

Python 3.7+contextvarsпонятие

contextvars.Context

контекстные переменные

Отображение ContextVar → значение; метод run() исполняет функцию внутри этого контекста.

Синтаксис

ctx = contextvars.Context(); ctx.run(callable, *args, **kwargs)

Context() создаёт пустой контекст — в нём переменные видят только свои default, а не текущие значения; снимок текущего даёт copy_context(). Изменять отображение напрямую нельзя: ctx[var] = x не работает, значения меняются только set() внутри run(). Один и тот же контекст нельзя войти дважды одновременно — вложенный ctx.run() того же ctx даёт RuntimeError.

Примеры

import contextvars
lang = contextvars.ContextVar('lang', default='ru')
lang.set('en')
print(contextvars.Context().run(lang.get))  # → ru — пустой контекст
print(contextvars.copy_context().run(lang.get))  # → en
ctx = contextvars.Context()
try:
    ctx.run(ctx.run, lang.get)
except RuntimeError:
    print('уже внутри этого контекста')  # → уже внутри этого контекста

См. также

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