元组对象¶
-
PyTypeObject PyTuple_Type¶
- Part of the Stable ABI.
PyTypeObject
的实例代表一个 Python 元组类型,这与 Python 层面的tuple
是相同的对象。
-
PyObject *PyTuple_New(Py_ssize_t len)¶
- 返回值:新的引用。 Part of the Stable ABI.
成功时返回一个新的元组对象,长度为 len,失败时返回
NULL
。
-
PyObject *PyTuple_Pack(Py_ssize_t n, ...)¶
- 返回值:新的引用。 Part of the Stable ABI.
成功时返回一个新的元组对象,大小为 n ,失败时返回
NULL
。 元组值初始化为指向 Python 对象的后续 n 个 C 参数。PyTuple_Pack(2, a, b)
和Py_BuildValue("(OO)", a, b)
相等。
-
Py_ssize_t PyTuple_Size(PyObject *p)¶
- Part of the Stable ABI.
获取指向元组对象的指针,并返回该元组的大小。
-
Py_ssize_t PyTuple_GET_SIZE(PyObject *p)¶
返回元组 p 的大小,它必须为非
NULL
并且指向一个元组;不执行错误检查。
-
PyObject *PyTuple_GetItem(PyObject *p, Py_ssize_t pos)¶
- 返回值:借入的引用。 Part of the Stable ABI.
返回 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)¶
- 返回值:新的引用。 Part of the Stable ABI.
返回 p 所指向的元组的从 low 到 high 的切片,或者在失败时返回
NULL
。 这等价于 Python 表达式p[low:high]
。 不支持从元组末尾进行索引。
-
int PyTuple_SetItem(PyObject *p, Py_ssize_t pos, PyObject *o)¶
- Part of the Stable ABI.
在 p 指向的元组的 pos 位置插入对对象 o 的引用。 成功时返回
0
;如果 pos 越界,则返回-1
,并抛出一个IndexError
异常。备注
此函数会“窃取”对 o 的引用,并丢弃对元组中已在受影响位置的条目的引用。
-
void PyTuple_SET_ITEM(PyObject *p, Py_ssize_t pos, PyObject *o)¶
类似于
PyTuple_SetItem()
,但不进行错误检查,并且应该 只是 被用来填充全新的元组。Bounds checking is performed as an assertion if Python is built in debug mode or
with assertions
.备注
这个函数会“窃取”一个对 o 的引用,但是,不与
PyTuple_SetItem()
不同,它 不会 丢弃对任何被替换项的引用;元组中位于 pos 位置的任何引用都将被泄漏。
-
int _PyTuple_Resize(PyObject **p, Py_ssize_t newsize)¶
可以用于调整元组的大小。 newsize 将是元组的新长度。 因为元组 被认为 是不可变的,所以只有在对象仅有一个引用时,才应该使用它。 如果元组已经被代码的其他部分所引用,请不要使用此项。 元组在最后总是会增长或缩小。 把它看作是销毁旧元组并创建一个新元组,只会更有效。 成功时返回
0
。 客户端代码不应假定*p
的结果值将与调用此函数之前的值相同。 如果替换了*p
引用的对象,则原始的*p
将被销毁。 失败时,返回-1
,将*p
设置为NULL
,并引发MemoryError
或者SystemError
。
结构序列对象¶
结构序列对象是等价于 namedtuple()
的 C 对象,即一个序列,其中的条目也可以通过属性访问。 要创建结构序列,你首先必须创建特定的结构序列类型。
-
PyTypeObject *PyStructSequence_NewType(PyStructSequence_Desc *desc)¶
- 返回值:新的引用。 Part of the Stable ABI.
根据 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 版本加入.
-
type PyStructSequence_Desc¶
- Part of the Stable ABI (including all members).
包含要创建的结构序列类型的元信息。
-
const char *name¶
结构序列类型的名称。
-
const char *doc¶
指向类型的文档字符串的指针或以
NULL
表示忽略。
-
PyStructSequence_Field *fields¶
指向以
NULL
结尾的数组的指针,该数组包含新类型的字段名。
-
int n_in_sequence¶
Python 端可见的字段数(如果用作元组)。
-
const char *name¶
-
type PyStructSequence_Field¶
- Part of the Stable ABI (including all members).
描述结构序列的一个字段。 由于结构序列是以元组为模型的,因此所有字段的类型都是 PyObject*。
PyStructSequence_Desc
的fields
数组中的索引决定了描述结构序列的是哪个字段。-
const char *name¶
字段的名称或
NULL
表示结束已命名字段列表,设为PyStructSequence_UnnamedField
则保持未命名状态。
-
const char *doc¶
字段文档字符串或
NULL
表示省略。
-
const char *name¶
-
const char *const PyStructSequence_UnnamedField¶
- Part of the Stable ABI since version 3.11.
字段名的特殊值将保持未命名状态。
在 3.9 版本发生变更: 这个类型已从
char *
更改。
-
PyObject *PyStructSequence_New(PyTypeObject *type)¶
- 返回值:新的引用。 Part of the Stable ABI.
创建 type 的实例,该实例必须使用
PyStructSequence_NewType()
创建。
-
PyObject *PyStructSequence_GetItem(PyObject *p, Py_ssize_t pos)¶
- 返回值:借入的引用。 Part of the Stable ABI.
Return the object at position pos in the struct sequence pointed to by p.
Bounds checking is performed as an assertion if Python is built in debug mode or
with assertions
.
-
PyObject *PyStructSequence_GET_ITEM(PyObject *p, Py_ssize_t pos)¶
- 返回值:借入的引用。
Alias to
PyStructSequence_GetItem()
.在 3.13 版本发生变更: Now implemented as an alias to
PyStructSequence_GetItem()
.
-
void PyStructSequence_SetItem(PyObject *p, Py_ssize_t pos, PyObject *o)¶
- Part of the Stable ABI.
将结构序列 p 的索引 pos 处的字段设置为值 o。 与
PyTuple_SET_ITEM()
一样,它应该只用于填充全新的实例。Bounds checking is performed as an assertion if Python is built in debug mode or
with assertions
.备注
这个函数“窃取”了指向 o 的一个引用。
-
void PyStructSequence_SET_ITEM(PyObject *p, Py_ssize_t *pos, PyObject *o)¶
Alias to
PyStructSequence_SetItem()
.在 3.13 版本发生变更: Now implemented as an alias to
PyStructSequence_SetItem()
.