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 对象。