Python 上下文变量


上下文变量的值可以根据其上下文而有所不同。与线程本地存储(每个执行线程可能对变量具有不同的值)不同,上下文变量在一个执行线程中可能存在多个上下文。这对于跟踪并发异步任务中的变量很有用。

ContextVar 类用于声明和使用上下文变量。

import contextvars
name = contextvars.ContextVar("name", default = 'Hello')

当在当前上下文中找不到变量的值时,可选的默认参数由 ContextVar.get() 返回。

name: 变量的名称。这是一个只读属性。

ContextVar 类中定义了以下方法

get()返回当前上下文中上下文变量的值。如果在当前上下文中没有变量的值,则该方法将 -
  • 返回方法的默认参数的值(如果提供) - 或

  • 返回上下文变量的默认值(如果使用默认值创建) - 或

  • 引发 LookupError 异常。

set()调用以设置当前上下文中上下文变量的新值。
reset()将上下文变量重置为创建令牌的 ContextVar.set() 使用之前的值。

context vars 模块中的 Context 类是上下文变量与其值的映射。

Context(): 创建一个空的上下文,其中不包含任何值。

要获取当前上下文的副本,请使用 copy_context() 函数。

run(callable, *args, **kwargs) 方法在调用 run 方法的上下文对象中执行 callable(*args, **kwargs) 代码,并返回执行结果。callable 对任何上下文变量所做的任何更改都将包含在上下文对象中。当从多个操作系统线程调用同一个上下文对象或递归调用时,该方法会引发 RuntimeError 异常。

copy()返回上下文对象的浅拷贝。
context[var]返回 var 上下文变量的值。如果在上下文对象中未设置该变量,则会引发 KeyError 异常。
get()如果上下文对象中存在上下文变量的值,则返回该值;否则,返回默认值。如果未给出默认值,则返回 None。
iter()返回存储在上下文对象中的变量的迭代器。
len()返回在上下文对象中设置的变量的数量。
keys()返回上下文对象中所有变量的列表。
values()返回上下文对象中所有变量值的列表。
    items()返回包含上下文对象中所有变量及其值的 2 元组列表。

更新于: 2019年7月30日

1K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.