# Cell 对象

“Cell”对象用于实现由多个作用域引用的变量。 对于每个这样的变量，一个“Cell”对象为了存储该值而被创建；引用该值的每个堆栈框架的局部变量包含同样使用该变量的对外部作用域的“Cell”引用。 访问该值时，将使用“Cell”中包含的值而不是单元格对象本身。 这种对“Cell”对象的非关联化的引用需要支持生成的字节码；访问时不会自动非关联化这些内容。 “Cell”对象在其他地方可能不太有用。

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 可以为 `NULL`。 cell 必须不为 `NULL`。

  当成功时，返回 `0`。 如果 cell 不是一个 cell 对象，则设置一个异常并返回 `-1`。

void PyCell_SET(PyObject *cell, PyObject *value)

  将 cell 对象 cell 的值设为 value。 不会调整引用计数，并且不会进行检测以保证安全；cell 必须为非 `NULL` 并且为一个 cell 对象。