Sequence Protocol¶
- Py_ssize_t
PySequence_Size
(PyObject *o)¶ - Py_ssize_t
PySequence_Length
(PyObject *o)¶ 成功返回序列o中的对象数,失败时返回
-1
。对于不提供序列协议的对象,这相当于Python表达式len(o)
。
- PyObject*
PySequence_Concat
(PyObject *o1, PyObject *o2)¶ - 返回值:新引用。
成功时返回o1和o2的连接,失败时返回NULL。这等效于Python表达式
o1 + o2
。
- PyObject*
PySequence_Repeat
(PyObject *o, Py_ssize_t count)¶ - 返回值:新引用。
返回失败时重复序列对象o 计数的结果,或NULL。这等效于Python表达式
o * count
。
- PyObject*
PySequence_InPlaceConcat
(PyObject *o1, PyObject *o2)¶ - 返回值:新引用。
成功时返回o1和o2的连接,失败时返回NULL。o1支持时,操作完成in-place。这等效于Python表达式
o1 + = o2
。
- PyObject*
PySequence_InPlaceRepeat
(PyObject *o, Py_ssize_t count)¶ - 返回值:新引用。
返回失败时重复序列对象o 计数的结果,或NULL。当o支持它时,操作在就地完成。这相当于Python表达式
o * = count
。
- PyObject*
PySequence_GetItem
(PyObject *o, Py_ssize_t i)¶ - 返回值:新引用。
在失败时返回o的i th元素或NULL。这相当于Python表达式
o[i]
。
- PyObject*
PySequence_GetSlice
(PyObject *o, Py_ssize_t i1, Py_ssize_t i2)¶ - 返回值:新引用。
返回故障时在i1和i2之间或NULL之间的序列对象o这相当于Python表达式
o[i1:i2]
。
- int
PySequence_SetItem
(PyObject *o, Py_ssize_t i, PyObject *v)¶ 将对象v分配给o的i th元素。引发异常并在失败时返回
-1
;返回0
成功。这等效于Python语句o [i] = v
。此函数不会窃取对v的引用。如果v是NULL,则会删除该元素,但是此功能已弃用,有利于使用
PySequence_DelItem()
。
- int
PySequence_SetSlice
(PyObject *o, Py_ssize_t i1, Py_ssize_t i2, PyObject *v)¶ 将序列对象v分配给序列对象o中从i1到i2的切片。这等效于Python语句
o [i1:i2] = v
。
- int
PySequence_DelSlice
(PyObject *o, Py_ssize_t i1, Py_ssize_t i2)¶ 删除i1到i2的序列对象o中的切片。失败时返回
-1
。这等效于Python语句del o [i1:i2]
。
- Py_ssize_t
PySequence_Count
(PyObject *o, PyObject *value)¶ 返回值在o中的出现次数,即返回
o [key] == value
。失败时,返回-1
。这相当于Python表达式o.count(value)
。
- int
PySequence_Contains
(PyObject *o, PyObject *value)¶ 确定o是否包含值。如果o中的项目等于值,则返回
1
,否则返回0
。出错时,返回-1
。这等同于 o中的Python表达式值 。
- Py_ssize_t
PySequence_Index
(PyObject *o, PyObject *value)¶ 返回
o [i] == 值
的第一个索引i。出错时,返回-1
。这相当于Python表达式o.index(value)
。
- PyObject*
PySequence_List
(PyObject *o)¶ - 返回值:新引用。
在失败时返回与序列或可迭代o或NULL内容相同的列表对象。返回的列表保证是新的。这相当于Python表达式
list(o)
。
- PyObject*
PySequence_Tuple
(PyObject *o)¶ - 返回值:新引用。
在失败时返回与任意序列o或NULL内容相同的元组对象。如果o是元组,将返回新的引用,否则将使用适当的内容构造元组。这相当于Python表达式
tuple(o)
。
- PyObject*
PySequence_Fast
(PyObject *o, const char *m)¶ - 返回值:新引用。
将序列o作为列表返回,除非它已经是元组或列表,在这种情况下返回o。使用
PySequence_Fast_GET_ITEM()
访问结果的成员。失败时返回NULL。如果对象不是序列,用m引发TypeError
作为消息文本。
- PyObject*
PySequence_Fast_GET_ITEM
(PyObject *o, Py_ssize_t i)¶ - 返回值:借用引用。
返回o的i th元素,假设o由
PySequence_Fast()
,o 不是NULL,且i在范围内。
- PyObject**
PySequence_Fast_ITEMS
(PyObject *o)¶ 返回PyObject指针的底层数组。假设
PySequence_Fast()
和o不是NULL返回o。注意,如果列表调整大小,重新分配可能会重新定位items数组。所以,只有在序列不能改变的上下文中使用底层数组指针。
- PyObject*
PySequence_ITEM
(PyObject *o, Py_ssize_t i)¶ - 返回值:新引用。
在失败时返回o或NULL的i元素。Macro form of
PySequence_GetItem()
but without checking thatPySequence_Check()
on o is true and without adjustment for negative indices.
- Py_ssize_t
PySequence_Fast_GET_SIZE
(PyObject *o)¶ 返回o的长度,假设o由
PySequence_Fast()
返回,o不是 NULL。也可以通过在o上调用PySequence_Size()
获得大小,但PySequence_Fast_GET_SIZE()
更快,因为它可以假设/ t7>是一个列表或元组。