Tuple Objects

PyTupleObject

PyObject的此子类型表示Python元组对象。

PyTypeObject PyTuple_Type

PyTypeObject的这个实例表示Python元组类型;它与Python层中的tuple是相同的对象。

int PyTuple_Check(PyObject *p)

如果p是元组对象或元组类型的子类型的实例,则返回true。

int PyTuple_CheckExact(PyObject *p)

如果p是元组对象,而不是元组类型的子类型的实例,则返回true。

PyObject* PyTuple_New(Py_ssize_t len)
返回值:新引用。

在失败时返回大小为lenNULL的新元组对象。

PyObject* PyTuple_Pack(Py_ssize_t n, ...)
返回值:新引用。

在失败时返回大小为nNULL的新元组对象。元组值被初始化为指向Python对象的后续n C参数。PyTuple_Pack(2, a, b)等效于Py_BuildValue )“, a, b)

Py_ssize_t PyTuple_Size(PyObject *p)

获取一个指向tuple对象的指针,并返回该元组的大小。

Py_ssize_t PyTuple_GET_SIZE(PyObject *p)

返回元组p的大小,它必须是非NULL并指向一个元组;不执行错误检查。

PyObject* PyTuple_GetItem(PyObject *p, Py_ssize_t pos)
返回值:借用引用。

返回p指向的元组中pos位置的对象。如果pos超出范围,请返回NULL并设置IndexError异常。

PyObject* PyTuple_GET_ITEM(PyObject *p, Py_ssize_t pos)
返回值:借用引用。

PyTuple_GetItem(),但不检查其参数。

PyObject* PyTuple_GetSlice(PyObject *p, Py_ssize_t low, Py_ssize_t high)
返回值:新引用。

取由p指向的元组的一部分,并将其返回为新的元组。

int PyTuple_SetItem(PyObject *p, Py_ssize_t pos, PyObject *o)

p指向的元组的位置pos插入对象o的引用。成功返回0

注意

此函数“窃取”对o的引用。

void PyTuple_SET_ITEM(PyObject *p, Py_ssize_t pos, PyObject *o)

PyTuple_SetItem(),但没有错误检查,应该仅用于填充全新的元组。

注意

此函数“窃取”对o的引用。

int _PyTuple_Resize(PyObject **p, Py_ssize_t newsize)

可以用来调整元组大小。newsize将是元组的新长度。因为元组假定是不可变的,所以只有当对象只有一个引用时才使用。如果元组对于代码的某些其他部分可能已经知道,请使用元组将总是在结束时增长或收缩。认为这是破坏旧的元组和创建一个新的,只有更有效率。成功返回0客户端代码不应该假设*p的结果值与调用此函数之前相同。如果替换*p引用的对象,则会破坏原始*p失败时返回-1并将*p设置为NULL,并引发MemoryErrorSystemError

int PyTuple_ClearFreeList()

清除空闲列表。返回已释放项目的总数。

Struct Sequence Objects

结构序列对象是namedtuple()对象的C等价物,即其项目也可以通过属性访问的序列。要创建结构序列,首先必须创建一个特定的结构序列类型。

PyTypeObject* PyStructSequence_NewType(PyStructSequence_Desc *desc)

desc中的数据创建一个新的结构体序列类型,如下所述。可以使用PyStructSequence_New()创建结果类型的实例。

void PyStructSequence_InitType(PyTypeObject *type, PyStructSequence_Desc *desc)

desc中初始化结构序列类型type

int PyStructSequence_InitType2(PyTypeObject *type, PyStructSequence_Desc *desc)

PyStructSequence_InitType相同,但在成功时返回0,在失败时返回-1

版本3.4中的新功能。

PyStructSequence_Desc

包含要创建的结构序列类型的元信息。

领域C类型含义
namechar *结构序列类型的名称
docchar *指向docstring的类型的指针或要省略的NULL
fieldsPyStructSequence_Field *指向NULL的终结数组,字段名称为新类型
n_in_sequenceintPython端可见的字段数(如果用作元组)
PyStructSequence_Field

描述结构序列的字段。由于结构序列被建模为元组,所有字段都被键入为PyObject*PyStructSequence_Descfields数组中的索引确定描述结构序列的哪个字段。

领域C类型含义
namechar *名称或NULL以结束命名字段的列表,设置为PyStructSequence_UnnamedField以保留未命名
docchar *字段docstring或NULL以省略
char* PyStructSequence_UnnamedField

特殊值为字段名留下未命名。

PyObject* PyStructSequence_New(PyTypeObject *type)

创建类型的实例,它必须使用PyStructSequence_NewType()创建。

PyObject* PyStructSequence_GetItem(PyObject *p, Py_ssize_t pos)

返回p所指向的struct序列中pos位置的对象。不执行边界检查。

PyObject* PyStructSequence_GET_ITEM(PyObject *p, Py_ssize_t pos)

宏等效于PyStructSequence_GetItem()

void PyStructSequence_SetItem(PyObject *p, Py_ssize_t pos, PyObject *o)

将结构序列 p的索引pos处的字段设置为值oPyTuple_SET_ITEM(),这只应该用于填充全新的实例。

注意

此函数“窃取”对o的引用。

PyObject* PyStructSequence_SET_ITEM(PyObject *p, Py_ssize_t *pos, PyObject *o)

宏等效于PyStructSequence_SetItem()

注意

此函数“窃取”对o的引用。