On this page
Tuple Objects
PyTupleObject
- PyObject的子类型表示 PythonTuples 对象。
PyTypeObject
PyTuple_Type
- PyTypeObject的实例代表 PythonTuples 类型;它与 Python 层中的
tuple
和types.TupleType
是同Pair象。
- PyTypeObject的实例代表 PythonTuples 类型;它与 Python 层中的
- int
PyTuple_Check
(PyObject ** p *)- 如果* p *是 Tuples 对象或 Tuples 类型的子类型的实例,则返回 true。
在版本 2.2 中更改:接受允许的子类型。
- int
PyTuple_CheckExact
(PyObject ** p *)- 如果* p *是 Tuples 对象,但不是 Tuples 类型的子类型的实例,则返回 true。
2.2 版中的新Function。
- PyObject *
PyTuple_New
(Py_ssize_t * len *)- 返回值:新参考.
返回一个大小为* len 的新 Tuples 对象,如果失败则返回 NULL *。
在版本 2.5 中更改:此函数为 len 使用int
类型。这可能需要更改您的代码以正确支持 64 位系统。
- PyObject *
PyTuple_Pack
(Py_ssize_t * n *,...)- 返回值:新参考.
返回一个大小为* n 的新 Tuples 对象,如果失败则返回 NULL 。Tuples 值被初始化为指向 Python 对象的后续 n * C 参数。 PyTuple_Pack(2, a, b)
等效于Py_BuildValue("(OO)", a, b)
。
2.4 版的新Function。
在版本 2.5 中更改:此函数对* n *使用了int
类型。这可能需要更改您的代码以正确支持 64 位系统。
- Py_ssize_t
PyTuple_Size
(PyObject ** p *)- 获取一个指向 Tuples 对象的指针,然后返回该 Tuples 的大小。
在版本 2.5 中进行了更改:此函数返回了int
类型。这可能需要更改您的代码以正确支持 64 位系统。
- Py_ssize_t
PyTuple_GET_SIZE
(PyObject ** p *)- 返回 Tuples* p 的大小,该大小必须为非 NULL *并指向 Tuples;不执行错误检查。
在版本 2.5 中进行了更改:此函数返回了int
类型。这可能需要更改您的代码以正确支持 64 位系统。
返回* p 指向的 Tuples 中 pos 位置的对象。如果 pos 超出范围,则返回 NULL *并设置IndexError异常。
在版本 2.5 中更改:此函数对 pos 使用了int
类型。这可能需要更改您的代码以正确支持 64 位系统。
类似于PyTuple_GetItem(),但不检查其参数。
在版本 2.5 中更改:此函数对 pos 使用了int
类型。这可能需要更改您的代码以正确支持 64 位系统。
返回* p 指向的 Tuples 的片,在 low 和 high 之间,或者在失败时返回 NULL *。这等效于 Python 表达式p[low:high]
。不支持从列表末尾开始索引。
在版本 2.5 中更改:此函数对 *low 和 high *使用了int
类型。这可能需要更改您的代码以正确支持 64 位系统。
- 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 中受影响位置的项的引用。
在版本 2.5 中更改:此函数对 pos 使用了int
类型。这可能需要更改您的代码以正确支持 64 位系统。
- 无效
PyTuple_SET_ITEM
(PyObject **p ,Py_ssize_t * pos ,PyObject o *)- 类似于PyTuple_SetItem(),但不进行错误检查,并且应“仅”用于填充全新的 Tuples。
Note
该宏“窃取”对* o 的引用,并且与PyTuple_SetItem()不同,它不不会丢弃对要替换的任何项目的引用;Tuples 中 pos *处的任何引用都将泄漏。
在版本 2.5 中更改:此函数对 pos 使用了int
类型。这可能需要更改您的代码以正确支持 64 位系统。
- 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,只会更有效。成功返回
在版本 2.2 中更改:删除了未使用的第三个参数* last_is_sticky *。
在版本 2.5 中更改:此函数对* newsize *使用了int
类型。这可能需要更改您的代码以正确支持 64 位系统。
- int
PyTuple_ClearFreeList
()- 清除空闲列表。返回释放的项目总数。
2.6 版的新Function。