Cell 物件

“Cell” 物件用於實現被多個作用域引用的變數。對於每個這樣的變數,都會建立一個 cell 物件來儲存值;引用該值的每個堆疊幀的區域性變數都包含對同樣使用該變數的外部作用域的 cell 的引用。當訪問該值時,使用的是 cell 中包含的值,而不是 cell 物件本身。這種對 cell 物件的解引用需要生成位元組碼的支援;在訪問時不會自動解引用。Cell 物件不太可能在其他地方有用。

type PyCellObject

用於 cell 物件的 C 結構體。

PyTypeObject PyCell_Type

對應於 cell 物件的型別物件。

int PyCell_Check(PyObject *ob)

如果 ob 是一個 cell 物件則返回 true;ob 不能為 NULL。此函式總是成功。

PyObject *PyCell_New(PyObject *ob)
返回值:新引用。

建立並返回一個新的 cell 物件,其中包含值 ob。引數可以為 NULL

PyObject *PyCell_Get(PyObject *cell)
返回值:新引用。

返回 cell cell 的內容,可以為 NULL。如果 cell 不是一個 cell 物件,則返回 NULL 並設定一個異常。

PyObject *PyCell_GET(PyObject *cell)
返回值:借用引用。

返回 cell cell 的內容,但不檢查 cell 是否為非 NULL 且為 cell 物件。

int PyCell_Set(PyObject *cell, PyObject *value)

將 cell 物件 cell 的內容設定為 value。這將釋放對 cell 任何當前內容的引用。value 可以為 NULLcell 必須為非 NULL

成功時返回 0。如果 cell 不是一個 cell 物件,則設定一個異常並返回 -1

void PyCell_SET(PyObject *cell, PyObject *value)

將 cell 物件 cell 的值設定為 value。不調整引用計數,也不進行安全檢查;cell 必須為非 NULL 且必須是一個 cell 物件。