元组对象

type PyTupleObject

这种subtype PyObject 表示python tuple对象。

PyTypeObject PyTuple_Type

此实例 PyTypeObject 表示python元组类型;它与 tuple 在python层中。

int PyTuple_Check(PyObject *p)

如果满足以下条件,则返回TRUE p 是元组对象或元组类型的子类型的实例。此功能总是成功的。

int PyTuple_CheckExact(PyObject *p)

如果满足以下条件,则返回TRUE p 是元组对象,但不是元组类型的子类型的实例。此功能总是成功的。

PyObject *PyTuple_New(Py_ssize_t len)
Return value: New reference.

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

PyObject *PyTuple_Pack(Py_ssize_t n, ...)
Return value: New reference.

返回大小为的新元组对象 nNULL 失败论。元组值初始化为 n c指向python对象的参数。 PyTuple_Pack(2, a, b) 等于 Py_BuildValue("(OO)", a, b) .

Py_ssize_t PyTuple_Size(PyObject *p)

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

Py_ssize_t PyTuple_GET_SIZE(PyObject *p)

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

PyObject *PyTuple_GetItem(PyObject *p, Py_ssize_t pos)
Return value: Borrowed reference.

返回位置处的对象 pos 指向的元组中 p 。如果 pos 为负或超出界限,则返回 NULL 并设置一个 IndexError 例外情况。

PyObject *PyTuple_GET_ITEM(PyObject *p, Py_ssize_t pos)
Return value: Borrowed reference.

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

PyObject *PyTuple_GetSlice(PyObject *p, Py_ssize_t low, Py_ssize_t high)
Return value: New reference.

返回由 p 之间 lowhighNULL 失败时。这相当于python表达式 p[low:high] . 不支持从列表末尾建立索引。

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

插入对对象的引用 o 就位 pos 指向的元组的 p . 返回 0 在成功的时候。如果 pos 越界,返回 -1 并设置一个 IndexError 例外。

注解

此函数“窃取”对 o 并放弃对位于受影响位置的元组中已存在的项的引用。

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

类似于 PyTuple_SetItem() ,但不进行错误检查,应该 only 用于填充全新的元组。

注解

这个宏“窃取”了对 o ,而且,不像 PyTuple_SetItem()not 放弃对要替换的任何项的引用;元组中位置处的任何引用 pos 将被泄露。

int _PyTuple_Resize(PyObject **p, Py_ssize_t newsize)

可用于调整元组的大小。 新闻化 将是元组的新长度。因为元组是 想象上的 要保持不变,只应在对对象只有一个引用的情况下使用此选项。做 not 如果代码的其他部分可能已经知道元组,则使用此选项。元组在结尾处总是增长或收缩。把这看成是破坏旧的元组并创建一个新的元组,只会更有效率。退换商品 0 论成功。客户机代码不应假定 *p 将与调用此函数之前相同。如果被引用的对象 *p 被替换,原始 *p 被摧毁。失败时,返回 -1*pNULL 并提出 MemoryErrorSystemError .

结构序列对象

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

PyTypeObject *PyStructSequence_NewType(PyStructSequence_Desc *desc)
Return value: New reference.

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

void PyStructSequence_InitType(PyTypeObject *type, PyStructSequence_Desc *desc)

初始化结构序列类型 typedesc 就位。

int PyStructSequence_InitType2(PyTypeObject *type, PyStructSequence_Desc *desc)

一样 PyStructSequence_InitType 但回报 0 论成功与否 -1 失败论。

3.4 新版功能.

type PyStructSequence_Desc

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

C型

意义

name

const char *

结构序列类型的名称

doc

const char *

指向类型或的docstring的指针 NULL 省略

fields

PyStructSequence_Field *

指针指向 NULL -以新类型的字段名终止的数组

n_in_sequence

int

Python端可见的字段数(如果用作元组)

type PyStructSequence_Field

描述结构序列的字段。由于结构序列被建模为元组,因此所有字段的类型都为 PyObject* . 中的索引 fields 数组 PyStructSequence_Desc 确定描述结构序列的哪个字段。

C型

意义

name

const char *

字段名或 NULL 若要结束命名字段列表,请设置为 PyStructSequence_UnnamedField 无名

doc

const char *

字段docstring或 NULL 省略

const char *const PyStructSequence_UnnamedField

字段名未命名的特殊值。

在 3.9 版更改: 类型已从 char * .

PyObject *PyStructSequence_New(PyTypeObject *type)
Return value: New reference.

创建的实例 type ,必须是用创建的 PyStructSequence_NewType() .

PyObject *PyStructSequence_GetItem(PyObject *p, Py_ssize_t pos)
Return value: Borrowed reference.

将对象返回到位置 pos 在由指向的结构序列中 p . 未执行边界检查。

PyObject *PyStructSequence_GET_ITEM(PyObject *p, Py_ssize_t pos)
Return value: Borrowed reference.

宏等效于 PyStructSequence_GetItem() .

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

在索引处设置字段 pos 结构序列的 p 重视 o . 类似于 PyTuple_SET_ITEM() ,这只能用于填充全新的实例。

注解

此函数“窃取”对 o .

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

宏等效于 PyStructSequence_SetItem() .

注解

此函数“窃取”对 o .