import contextvars var = contextvars.ContextVar(name[, *, default])
name
- имя переменной, используемое в контексте,default
- значение переменной по умолчанию.Класс ContextVar()
модуля contextvars
используется для объявления новой контекстной переменной, например:
var: ContextVar[int] = ContextVar('var', default=42)
Обязательный аргумент name
используется для самоанализа и отладки.
Необязательный ключевой аргумент default
, возвращается методом ContextVar.get()
, если в текущем контексте не найдено значение для переменной.
Важно: переменные контекста следует создавать на верхнем уровне модуля, а не в замыканиях. Объекты контекста содержат "сильные" ссылки на переменные контекста, что предотвращает сборку мусора для этих переменных.
Пример использования смотрите в обзоре модуля contextvars
.
ContextVar.name
- имя переменной,ContextVar.get()
- возвращает значение переменной контекста ,ContextVar.set()
- новое значение для переменной контекста,ContextVar.reset()
- сбрасывает контекстную переменную.ContextVar.name
:Атрибут ContextVar.name
представляет собой имя переменной и доступен только для чтения.
ContextVar.get([default])
:Метод ContextVar.get()
возвращает значение переменной контекста для текущего контекста.
Если для переменной в текущем контексте нет значения, то метод будет:
default
, если он указан;default
для переменной контекста, если она была создана в конструкторе;LookupError
.ContextVar.set(value)
:Вызов метода ContextVar.set()
установит новое значение для переменной контекста в текущем контексте.
Обязательный аргумент value
- это новое значение контекстной переменной.
Возвращает объект contextvars.Token
, который можно использовать для восстановления переменной до ее предыдущего значения с помощью метода ContextVar.reset()
.
ContextVar.reset(token)
:Метод ContextVar.reset()
сбрасывает контекстную переменную до значения, которое она имела до того, как был использован метод ContextVar.set()
, создавший токен.
var = ContextVar('var') token = var.set('new_value') ... # здесь будет код, использующий 'var'; # метод var.get() возвращает 'new_value'. ... var.reset(token) # После вызова var.reset(), переменная 'var' не будет # иметь значения, т.к. задана только в контексте # а вызов var.get() вызовет `LookupError`.