上下文變量對象?
注解
在 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 新版功能.
本節(jié)深入介紹了 contextvars 模塊的公用 C API。
-
PyContext? 用于表示
contextvars.Context對象的 C 結(jié)構(gòu)體。
-
PyContextVar? 用于表示
contextvars.ContextVar對象的 C 結(jié)構(gòu)體。
-
PyContextToken? 用于表示
contextvars.Token對象的 C 結(jié)構(gòu)體。
-
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。 此函數(shù)總是會成功執(zhí)行。
-
int
PyContextVar_CheckExact(PyObject?*o)? 如果 o 的類型為
PyContextVar_Type則返回真值。 o 必須不為NULL。 此函數(shù)總是會成功執(zhí)行。
-
int
PyContextToken_CheckExact(PyObject?*o)? 如果 o 的類型為
PyContextToken_Type則返回真值。 o 必須不為NULL。 此函數(shù)總是會成功執(zhí)行。
上下文對象管理函數(shù):
-
PyObject *
PyContext_New(void)? - Return value: New reference.
創(chuàng)建一個(gè)新的空上下文對象。 如果發(fā)生錯(cuò)誤則返回
NULL。
-
PyObject *
PyContext_Copy(PyObject?*ctx)? - Return value: New reference.
創(chuàng)建所傳入的 ctx 上下文對象的淺拷貝。 如果發(fā)生錯(cuò)誤則返回
NULL。
-
PyObject *
PyContext_CopyCurrent(void)? - Return value: New reference.
創(chuàng)建當(dāng)前線程上下文的淺拷貝。 如果發(fā)生錯(cuò)誤則返回
NULL。
-
int
PyContext_Enter(PyObject?*ctx)? 將 ctx 設(shè)為當(dāng)前線程的當(dāng)前上下文。 成功時(shí)返回
0,出錯(cuò)時(shí)返回-1。
-
int
PyContext_Exit(PyObject?*ctx)? 取消激活 ctx 上下文并將之前的上下文恢復(fù)為當(dāng)前線程的當(dāng)前上下文。 成功時(shí)返回
0,出錯(cuò)時(shí)返回-1。
-
int
PyContext_ClearFreeList()? 清空上下文變量釋放列表。 返回所釋放的條目總數(shù)。 此函數(shù)總是會成功執(zhí)行。
上下文變量函數(shù):
-
PyObject *
PyContextVar_New(const char?*name, PyObject?*def)? - Return value: New reference.
創(chuàng)建一個(gè)新的' ' ContextVar' '對象。形參*name*用于自我檢查和調(diào)試目的??蛇x形參*def*為上下文變量指定默認(rèn)值。如果發(fā)生錯(cuò)誤,這個(gè)函數(shù)返回' ' NULL ' '。
-
int
PyContextVar_Get(PyObject?*var, PyObject?*default_value, PyObject?**value)? 獲取上下文變量的值。如果在查找過程中發(fā)生錯(cuò)誤,返回' ' -1 ' ',如果沒有發(fā)生錯(cuò)誤,無論是否找到值,都返回' ' 0 ' ',
如果找到上下文變量,value 將是指向它的指針。 如果上下文變量 沒有 找到,value 將指向:
default_value,如果非``NULL``;
var 的默認(rèn)值,如果不是
NULL;NULL
如果找到該值,函數(shù)將創(chuàng)建對它的新引用。
-
PyObject *
PyContextVar_Set(PyObject?*var, PyObject?*value)? - Return value: New reference.
在當(dāng)前上下文中將 var 的值設(shè)為 value。 返回指向
PyObject對象的指針,如果發(fā)生錯(cuò)誤則返回NULL。
-
int
PyContextVar_Reset(PyObject?*var, PyObject?*token)? 將上下文變量 var 的狀態(tài)重置為它在返回 token 的
PyContextVar_Set()被調(diào)用之前的狀態(tài)。 此函數(shù)成功時(shí)返回0,出錯(cuò)時(shí)返回-1。
