上下文變量對象?

注解

在 3.7.1 版更改:

在 Python 3.7.1 中,所有上下文變量 C API 的簽名被 更改 為使用 PyObject 指針而不是 PyContext, PyContextVar 以及 PyContextToken,例如:

// in 3.7.0:
PyContext *PyContext_New(void);

// in 3.7.1+:
PyObject *PyContext_New(void);

詳情請參閱:issue: ' 34762 '。

3.7 新版功能.

本節深入介紹了 contextvars 模塊的公用 C API。

PyContext?

用于表示 contextvars.Context 對象的 C 結構體。

PyContextVar?

用于表示 contextvars.ContextVar 對象的 C 結構體。

PyContextToken?

用于表示 contextvars.Token 對象的 C 結構體。

PyTypeObject PyContext_Type?

表示 context 類型的類型對象。

PyTypeObject PyContextVar_Type?

表示 context variable 類型的類型對象。

PyTypeObject PyContextToken_Type?

表示 context variable token 類型的類型對象。

類型檢查宏:

int PyContext_CheckExact(PyObject?*o)?

如果 o 的類型為 PyContext_Type 則返回真值。 o 必須不為 NULL。 此函數總是會成功執行。

int PyContextVar_CheckExact(PyObject?*o)?

如果 o 的類型為 PyContextVar_Type 則返回真值。 o 必須不為 NULL。 此函數總是會成功執行。

int PyContextToken_CheckExact(PyObject?*o)?

如果 o 的類型為 PyContextToken_Type 則返回真值。 o 必須不為 NULL。 此函數總是會成功執行。

上下文對象管理函數:

PyObject *PyContext_New(void)?
Return value: New reference.

創建一個新的空上下文對象。 如果發生錯誤則返回 NULL。

PyObject *PyContext_Copy(PyObject?*ctx)?
Return value: New reference.

創建所傳入的 ctx 上下文對象的淺拷貝。 如果發生錯誤則返回 NULL。

PyObject *PyContext_CopyCurrent(void)?
Return value: New reference.

創建當前線程上下文的淺拷貝。 如果發生錯誤則返回 NULL

int PyContext_Enter(PyObject?*ctx)?

ctx 設為當前線程的當前上下文。 成功時返回 0,出錯時返回 -1。

int PyContext_Exit(PyObject?*ctx)?

取消激活 ctx 上下文并將之前的上下文恢復為當前線程的當前上下文。 成功時返回 0,出錯時返回 -1。

int PyContext_ClearFreeList()?

清空上下文變量釋放列表。 返回所釋放的條目總數。 此函數總是會成功執行。

上下文變量函數:

PyObject *PyContextVar_New(const char?*name, PyObject?*def)?
Return value: New reference.

創建一個新的' ' ContextVar' '對象。形參*name*用于自我檢查和調試目的??蛇x形參*def*為上下文變量指定默認值。如果發生錯誤,這個函數返回' ' NULL ' '。

int PyContextVar_Get(PyObject?*var, PyObject?*default_value, PyObject?**value)?

獲取上下文變量的值。如果在查找過程中發生錯誤,返回' ' -1 ' ',如果沒有發生錯誤,無論是否找到值,都返回' ' 0 ' ',

如果找到上下文變量,value 將是指向它的指針。 如果上下文變量 沒有 找到,value 將指向:

  • default_value,如果非``NULL``;

  • var 的默認值,如果不是 NULL;

  • NULL

如果找到該值,函數將創建對它的新引用。

PyObject *PyContextVar_Set(PyObject?*var, PyObject?*value)?
Return value: New reference.

在當前上下文中將 var 的值設為 value。 返回指向 PyObject 對象的指針,如果發生錯誤則返回 NULL。

int PyContextVar_Reset(PyObject?*var, PyObject?*token)?

將上下文變量 var 的狀態重置為它在返回 tokenPyContextVar_Set() 被調用之前的狀態。 此函數成功時返回 0,出錯時返回 -1。