Cell 对象

"Cell" objects are used to implement variables referenced by multiple scopes. For each such variable, a cell object is created to store the value; the local variables of each stack frame that references the value contain a reference to the cells from outer scopes which also use that variable. When the value is accessed, the value contained in the cell is used instead of the cell object itself. This de-referencing of the cell object requires support from the generated byte-code; these are not automatically de-referenced when accessed. Cell objects are not likely to be useful elsewhere.

type PyCellObject

用于Cell对象的C结构体。

PyTypeObject PyCell_Type

与 Cell 对象对应的类型对​​象。

int PyCell_Check(PyObject *ob)

如果 ob 是一个 cell 对象则返回真值;ob 必须不为 NULL。 此函数总是会成功执行。

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

创建并返回一个包含值 ob 的新 cell 对象。形参可以为 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 对象。