元组对象 — Python 文档
元组对象
- type PyTupleObject
- PyObject 的这个子类型代表一个 Python 元组对象。
- PyTypeObject PyTuple_Type
- PyTypeObject的这个实例代表了Python元组类型; 它与 Python 层中的
tuple
和types.TupleType
是相同的对象。
- int PyTuple_Check(PyObject *p)
如果 p 是元组对象或元组类型的子类型的实例,则返回 true。
在 2.2 版更改:允许接受子类型。
- int PyTuple_CheckExact(PyObject *p)
如果 p 是元组对象,但不是元组类型的子类型的实例,则返回 true。
2.2 版中的新功能。
- PyObject *PyTuple_New(Py_ssize_t len)
失败时返回大小为 len 或 NULL 的新元组对象。
2.5 版更改: 此函数使用
int
类型用于 len。 这可能需要更改您的代码才能正确支持 64 位系统。
- PyObject *PyTuple_Pack(Py_ssize_t n, ...)
失败时返回大小为 n 或 NULL 的新元组对象。 元组值被初始化为指向 Python 对象的后续 n C 参数。
PyTuple_Pack(2, a, b)
相当于Py_BuildValue("(OO)", a, b)
。2.4 版中的新功能。
2.5 版更改: 此函数使用
int
类型用于 n。 这可能需要更改您的代码才能正确支持 64 位系统。
- Py_ssize_t PyTuple_Size(PyObject *p)
获取一个指向元组对象的指针,并返回该元组的大小。
2.5 版更改: 此函数返回
int
类型。 这可能需要更改您的代码才能正确支持 64 位系统。
- Py_ssize_t PyTuple_GET_SIZE(PyObject *p)
返回元组p的大小,必须是非NULL并指向一个元组; 不执行错误检查。
2.5 版更改: 此函数返回
int
类型。 这可能需要更改您的代码才能正确支持 64 位系统。
- PyObject *PyTuple_GetItem(PyObject *p, Py_ssize_t pos)
返回 p 指向的元组中位置 pos 处的对象。 如果 pos 超出范围,则返回 NULL 并设置一个
IndexError
异常。在 2.5 版更改:此函数使用
int
类型用于 pos。 这可能需要更改您的代码才能正确支持 64 位系统。
- PyObject *PyTuple_GET_ITEM(PyObject *p, Py_ssize_t pos)
类似于 PyTuple_GetItem(),但不检查其参数。
在 2.5 版更改:此函数使用
int
类型用于 pos。 这可能需要更改您的代码才能正确支持 64 位系统。
- PyObject *PyTuple_GetSlice(PyObject *p, Py_ssize_t low, Py_ssize_t high)
返回 low 和 high 之间的 p 指向的元组的切片,或者在失败时返回 NULL。 这相当于 Python 表达式
p[low:high]
。 不支持从列表末尾开始索引。2.5 版更改: 此函数使用
int
类型用于 low 和 high。 这可能需要更改您的代码才能正确支持 64 位系统。
- int PyTuple_SetItem(PyObject *p, Py_ssize_t pos, PyObject *o)
在 p 指向的元组的位置 pos 处插入对对象 o 的引用。 成功返回
0
。 如果 pos 超出范围,则返回-1
并设置一个IndexError
异常。笔记
此函数“窃取”对 o 的引用,并丢弃对受影响位置元组中已有项目的引用。
在 2.5 版更改:此函数使用
int
类型用于 pos。 这可能需要更改您的代码才能正确支持 64 位系统。
- void PyTuple_SET_ITEM(PyObject *p, Py_ssize_t pos, PyObject *o)
类似于 PyTuple_SetItem(),但不做错误检查,应该使用 only 来填充全新的元组。
笔记
这个宏“窃取”了对 o 的引用,并且与 PyTuple_SetItem() 不同, 不 丢弃对任何被替换项的引用; 元组中位于 pos 位置的任何引用都将被泄露。
在 2.5 版更改:此函数使用
int
类型用于 pos。 这可能需要更改您的代码才能正确支持 64 位系统。
- int _PyTuple_Resize(PyObject **p, Py_ssize_t newsize)
可用于调整元组的大小。 newsize 将是元组的新长度。 因为元组 supposed 是不可变的,所以只有当对象只有一个引用时才应该使用它。 如果代码的其他部分可能已经知道元组,请不要 不 使用它。 元组最终将始终增长或缩小。 将此视为销毁旧元组并创建一个新元组,只会更有效。 成功返回
0
。 客户端代码永远不应该假设*p
的结果值将与调用此函数之前相同。 如果*p
引用的对象被替换,原来的*p
被破坏。 失败时,返回-1
并将*p
设置为 NULL,并引发MemoryError
或SystemError
。在 2.2 版更改: 删除了未使用的第三个参数 last_is_sticky。
2.5 版更改: 该函数使用
int
类型为 newsize。 这可能需要更改您的代码才能正确支持 64 位系统。
- int PyTuple_ClearFreeList()
清除空闲列表。 返回已释放项目的总数。
2.6 版中的新功能。