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.