序列协议

int PySequence_Check(PyObject *o)

如果对象提供序列协议,函数返回 1,否则返回 0。 请注意它将为具有 __getitem__() 方法的 Python 类返回 1,除非它们是 dict 的子类,因为在一般情况下无法确定它所支持键类型。 此函数总是会成功执行。

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)
Return value: New reference.

Return the concatenation of o1 and o2 on success, and NULL on failure. This is the equivalent of the Python expression o1 + o2.

PyObject* PySequence_Repeat(PyObject *o, Py_ssize_t count)
Return value: New reference.

Return the result of repeating sequence object o count times, or NULL on failure. This is the equivalent of the Python expression o * count.

PyObject* PySequence_InPlaceConcat(PyObject *o1, PyObject *o2)
Return value: New reference.

Return the concatenation of o1 and o2 on success, and NULL on failure. The operation is done in-place when o1 supports it. This is the equivalent of the Python expression o1 += o2.

PyObject* PySequence_InPlaceRepeat(PyObject *o, Py_ssize_t count)
Return value: New reference.

Return the result of repeating sequence object o count times, or NULL on failure. The operation is done in-place when o supports it. This is the equivalent of the Python expression o *= count.

PyObject* PySequence_GetItem(PyObject *o, Py_ssize_t i)
Return value: New reference.

Return the ith element of o, or NULL on failure. This is the equivalent of the Python expression o[i].

PyObject* PySequence_GetSlice(PyObject *o, Py_ssize_t i1, Py_ssize_t i2)
Return value: New reference.

Return the slice of sequence object o between i1 and i2, or NULL on failure. This is the equivalent of the Python expression o[i1:i2].

int PySequence_SetItem(PyObject *o, Py_ssize_t i, PyObject *v)

将对象 v 赋值给 o 的第 i 号元素。 失败时会引发异常并返回 -1;成功时返回 0。 这相当于 Python 语句 o[i] = v。 此函数 不会 改变对 v 的引用。

If v is NULL, the element is deleted, however this feature is deprecated in favour of using PySequence_DelItem().

int PySequence_DelItem(PyObject *o, Py_ssize_t i)

删除对象 o 的第 i 号元素。 失败时返回 -1。 这相当于 Python 语句 del o[i]

int PySequence_SetSlice(PyObject *o, Py_ssize_t i1, Py_ssize_t i2, PyObject *v)

将序列对象 v 赋值给序列对象 o 的从 i1i2 切片。 这相当于 Python 语句 o[i1:i2] = v

int PySequence_DelSlice(PyObject *o, Py_ssize_t i1, Py_ssize_t i2)

删除序列对象 o 的从 i1i2 的切片。 失败时返回 -1。 这相当于 Python 语句 del o[i1:i2]

Py_ssize_t PySequence_Count(PyObject *o, PyObject *value)

返回 valueo 中出现的次数,即返回使得 o[key] == value 的键的数量。 失败时返回 -1。 这相当于 Python 表达式 o.count(value)

int PySequence_Contains(PyObject *o, PyObject *value)

确定 o 是否包含 value。 如果 o 中的某一项等于 value,则返回 1,否则返回 0。 出错时,返回 -1。 这相当于 Python 表达式 value in o

Py_ssize_t PySequence_Index(PyObject *o, PyObject *value)

返回第一个索引*i*,其中 o[i] == value.出错时,返回“-1”.相当于Python的``o.index(value)``表达式.

PyObject* PySequence_List(PyObject *o)
Return value: New reference.

Return a list object with the same contents as the sequence or iterable o, or NULL on failure. The returned list is guaranteed to be new. This is equivalent to the Python expression list(o).

PyObject* PySequence_Tuple(PyObject *o)
Return value: New reference.

Return a tuple object with the same contents as the sequence or iterable o, or NULL on failure. If o is a tuple, a new reference will be returned, otherwise a tuple will be constructed with the appropriate contents. This is equivalent to the Python expression tuple(o).

PyObject* PySequence_Fast(PyObject *o, const char *m)
Return value: New reference.

Return the sequence or iterable o as an object usable by the other PySequence_Fast* family of functions. If the object is not a sequence or iterable, raises TypeError with m as the message text. Returns NULL on failure.

PySequence_Fast* 函数之所以这样命名,是因为它们会假定 o 是一个 PyTupleObjectPyListObject 并直接访问 o 的数据字段。

作为 CPython 的实现细节,如果 o 已经是一个序列或列表,它将被直接返回。

Py_ssize_t PySequence_Fast_GET_SIZE(PyObject *o)

Returns the length of o, assuming that o was returned by PySequence_Fast() and that o is not NULL. The size can also be gotten by calling PySequence_Size() on o, but PySequence_Fast_GET_SIZE() is faster because it can assume o is a list or tuple.

PyObject* PySequence_Fast_GET_ITEM(PyObject *o, Py_ssize_t i)
Return value: Borrowed reference.

Return the ith element of o, assuming that o was returned by PySequence_Fast(), o is not NULL, and that i is within bounds.

PyObject** PySequence_Fast_ITEMS(PyObject *o)

Return the underlying array of PyObject pointers. Assumes that o was returned by PySequence_Fast() and o is not NULL.

请注意,如果列表调整大小,重新分配可能会重新定位items数组.因此,仅在序列无法更改的上下文中使用基础数组指针.

PyObject* PySequence_ITEM(PyObject *o, Py_ssize_t i)
Return value: New reference.

Return the ith element of o or NULL on failure. Faster form of PySequence_GetItem() but without checking that PySequence_Check() on o is true and without adjustment for negative indices.