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* 可以為 NULL。*cell* 必須為非 NULL

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

void PyCell_SET(PyObject *cell, PyObject *value)

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