Python Glossary English

Python 3.7+contextvarsпонятие

contextvars.Token

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

Объект, который возвращает ContextVar.set(): хранит прежнее значение и нужен, чтобы откатить его через reset().

Синтаксис

token = var.set(value); var.reset(token)

reset(token) возвращает переменной значение до set(), а если его не было — снова делает её пустой; простое set(old) так не умеет. Токен одноразовый: второй reset() даёт RuntimeError, а токен из другого контекста — ValueError. old_value равен Token.MISSING, если значения не было. С Python 3.14 токен — менеджер контекста: with var.set(x): откатывает значение сам.

Примеры

import contextvars
level = contextvars.ContextVar('level', default='info')
token = level.set('debug')
print(level.get())  # → debug
level.reset(token)
print(level.get())  # → info
try:
    level.reset(token)
except RuntimeError:
    print('токен уже использован')  # → токен уже использован
# Python 3.14+
import contextvars
level = contextvars.ContextVar('level', default='info')
with level.set('debug'):
    print(level.get())  # → debug
print(level.get())  # → info

См. также

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