Невозможно получить доступ к ContextVar в подфункцииPython

Программы на Python
Ответить
Anonymous
 Невозможно получить доступ к ContextVar в подфункции

Сообщение Anonymous »

Я пытаюсь получить доступ к значению переменной, которая вычисляется в начале стека вызовов. Значение необходимо использовать глубоко в подвызове, но используемые библиотеки не позволяют каким-либо образом передавать значение в качестве аргумента ключевого слова или иным образом. Я нашел ContextVar в качестве альтернативы, и, насколько я понимаю, можно установить переменную, а затем получить доступ к ее значению внутри вызываемых вложенных функций.
Однако у меня это не работает, или я не до конца понял эту концепцию. Этот фрагмент кода возвращает значение по умолчанию None вместо строки «new_value», на которую я надеялся. Единственный способ добиться этой цели — использовать ctx_var в foo(), но это каким-то образом противоречит цели отсутствия доступа к переменной.

Код: Выделить всё

from contextvars import ContextVar

ctx_var = ContextVar("bar")
token = ctx_var.set("new_value")

def foo():
bar = ContextVar("bar")
bar_value = bar.get(None)
print(bar_value)

foo()

ctx_var.reset(token)
Любая помощь будет полезна.

Подробнее здесь: https://stackoverflow.com/questions/798 ... b-function
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»