On this page
Tuple Objects
PyTupleObject- PyObject的子类型表示 PythonTuples 对象。
PyTypeObject
PyTuple_Type- PyTypeObject的实例代表 PythonTuples 类型;它与 Python 层中的tuple是同Pair象。
int
PyTuple_Check(PyObject ** p *)- 如果* p *是 Tuples 对象或 Tuples 类型的子类型的实例,则返回 true。
int
PyTuple_CheckExact(PyObject ** p *)- 如果* p *是 Tuples 对象,但不是 Tuples 类型的子类型的实例,则返回 true。
PyObject *
PyTuple_New(Py_ssize_t * len *)- 返回值:新参考.
返回一个新的 Tuples 对象,大小为* len *,失败时返回NULL。
- PyObject *
PyTuple_Pack(Py_ssize_t * n *,...)- 返回值:新参考.
返回一个大小为* n 的新 Tuples 对象,如果失败则返回NULL。Tuples 值被初始化为指向 Python 对象的后续 n * C 参数。 PyTuple_Pack(2, a, b)等效于Py_BuildValue("(OO)", a, b)。
Py_ssize_t
PyTuple_Size(PyObject ** p *)- 获取一个指向 Tuples 对象的指针,然后返回该 Tuples 的大小。
Py_ssize_t
PyTuple_GET_SIZE(PyObject ** p *)- 返回 Tuples* p *的大小,该大小必须为非
NULL并指向 Tuples;不执行错误检查。
- 返回 Tuples* p *的大小,该大小必须为非
PyObject *
PyTuple_GetItem(PyObject ** p *,Py_ssize_t * pos *)- *返回值:借用参考。
返回* p 指向的 Tuples 中 pos 位置的对象。如果 pos *超出范围,则返回NULL并设置IndexErrorexception。
类似于PyTuple_GetItem(),但不检查其参数。
返回* p 指向的 Tuples 切片,在 low 和 high *之间,或者在失败时返回NULL。这等效于 Python 表达式p[low:high]。不支持从列表末尾开始索引。
- int
PyTuple_SetItem(PyObject **p ,Py_ssize_t * pos ,PyObject o *)- 在* p 指向的 Tuples 的位置 pos 处插入对对象 o 的引用。成功返回
0。如果 pos *超出范围,则返回-1并设置IndexErrorexception。
- 在* p 指向的 Tuples 的位置 pos 处插入对对象 o 的引用。成功返回
Note
此函数“窃取”对* o *的引用,并放弃对已在 Tuples 中受影响位置的项的引用。
- 无效
PyTuple_SET_ITEM(PyObject **p ,Py_ssize_t * pos ,PyObject o *)- 类似于PyTuple_SetItem(),但不进行错误检查,并且应“仅”用于填充全新的 Tuples。
Note
该宏“窃取”对* o 的引用,并且与PyTuple_SetItem()不同,它不不会丢弃对要替换的任何项目的引用;Tuples 中 pos *处的任何引用都将泄漏。
int
_PyTuple_Resize(PyObject *** p *,Py_ssize_t * newsize *)- 可用于调整 Tuples 的大小。 * newsize *将是 Tuples 的新长度。因为 Tuples 被假定为不可变的,所以仅在对该对象只有一个引用的情况下才应使用它。如果代码的其他部分可能已经知道 Tuples,请不要使用此Function。最后,Tuples 将始终增长或收缩。将其视为破坏旧的 Tuples 并创建新的 Tuples,只会更有效。成功返回
0。Client 端代码永远不应假定*p的结果值与调用此函数之前的值相同。如果替换了*p引用的对象,则原始*p被销毁。失败时,返回-1并将*p设置为NULL,并引发MemoryError或SystemError。
- 可用于调整 Tuples 的大小。 * newsize *将是 Tuples 的新长度。因为 Tuples 被假定为不可变的,所以仅在对该对象只有一个引用的情况下才应使用它。如果代码的其他部分可能已经知道 Tuples,请不要使用此Function。最后,Tuples 将始终增长或收缩。将其视为破坏旧的 Tuples 并创建新的 Tuples,只会更有效。成功返回
int
PyTuple_ClearFreeList()- 清除空闲列表。返回释放的项目总数。
结构序列对象
结构序列对象是namedtuple()对象的 C 等效项,即序列也可以pass属性访问的对象。要创建结构序列,首先必须创建特定的结构序列类型。
- PyTypeObject *
PyStructSequence_NewType(PyStructSequence_Desc ** desc *)- 返回值:新参考.
根据* desc *中的数据创建一个新的结构序列类型,如下所述。可以使用PyStructSequence_New()创建结果类型的实例。
无效
PyStructSequence_InitType(PyTypeObject 类型,PyStructSequence_Desc* desc *)- 从* desc 初始化一个结构序列类型 type *。
int
PyStructSequence_InitType2(PyTypeObject *type ,PyStructSequence_Desc desc *)- 与
PyStructSequence_InitType相同,但成功则返回0,失败则返回-1。
- 与
3.4 版的新Function。
PyStructSequence_Desc- 包含要创建的结构序列类型的元信息。
| Field | C Type | Meaning |
|---|---|---|
name |
const char * |
结构序列类型的名称 |
doc |
const char * |
指向该类型的文档字符串的指针或要忽略的NULL |
fields |
PyStructSequence_Field * |
指向具有新类型的字段名称的NULL终止数组的指针 |
n_in_sequence |
int |
Python 端可见的字段数(如果用作 Tuples) |
PyStructSequence_Field- 描述结构序列的字段。由于将结构序列建模为 Tuples,因此所有字段的类型均为PyObject*。 PyStructSequence_Desc的
fields数组中的索引确定描述了结构序列的哪个字段。
- 描述结构序列的字段。由于将结构序列建模为 Tuples,因此所有字段的类型均为PyObject*。 PyStructSequence_Desc的
| Field | C Type | Meaning |
|---|---|---|
name |
const char * |
字段名称或NULL结束命名字段列表,设置为PyStructSequence_UnnamedField保留未命名 |
doc |
const char * |
字段文档字符串或NULL忽略 |
字符*
PyStructSequence_UnnamedField- 字段名称的特殊值,以使其不命名。
PyObject *
PyStructSequence_New(PyTypeObject *类型)- 返回值:新参考.
创建* type *的实例,该实例必须已使用PyStructSequence_NewType()创建。
返回* p 指向的结构序列中位置 pos *的对象。不执行边界检查。
相当于PyStructSequence_GetItem()的宏。
- 无效
PyStructSequence_SetItem(PyObject **p ,Py_ssize_t * pos ,PyObject o *)- 将结构序列* p 的索引 pos 的字段设置为值 o *。像PyTuple_SET_ITEM()一样,只能用于填充全新的实例。
Note
此函数“窃取”对* o *的引用。
Note
此函数“窃取”对* o *的引用。