序列協議

int PySequence_Check(PyObject *o)
屬於穩定 ABI的一部分。

如果物件提供序列協議,則返回 1,否則返回 0。請注意,對於具有 __getitem__() 方法的 Python 類,它會返回 1,除非它們是 dict 子類,因為通常無法確定該類支援的鍵型別。此函式始終成功。

Py_ssize_t PySequence_Size(PyObject *o)
Py_ssize_t PySequence_Length(PyObject *o)
屬於穩定 ABI的一部分。

成功時返回序列 *o* 中的物件數量,失敗時返回 -1。這等效於 Python 表示式 len(o)

PyObject *PySequence_Concat(PyObject *o1, PyObject *o2)
返回值:新引用。屬於穩定 ABI的一部分。

成功時返回 *o1* 和 *o2* 的串聯,失敗時返回 NULL。這等效於 Python 表示式 o1 + o2

PyObject *PySequence_Repeat(PyObject *o, Py_ssize_t count)
返回值:新引用。屬於穩定 ABI的一部分。

返回將序列物件 *o* 重複 *count* 次的結果,失敗時返回 NULL。這等效於 Python 表示式 o * count

PyObject *PySequence_InPlaceConcat(PyObject *o1, PyObject *o2)
返回值:新引用。屬於穩定 ABI的一部分。

成功時返回 *o1* 和 *o2* 的串聯,失敗時返回 NULL。當 *o1* 支援時,該操作是 *就地* 完成的。這等效於 Python 表示式 o1 += o2

PyObject *PySequence_InPlaceRepeat(PyObject *o, Py_ssize_t count)
返回值:新引用。屬於穩定 ABI的一部分。

返回將序列物件 *o* 重複 *count* 次的結果,失敗時返回 NULL。當 *o* 支援時,該操作是 *就地* 完成的。這等效於 Python 表示式 o *= count

PyObject *PySequence_GetItem(PyObject *o, Py_ssize_t i)
返回值:新引用。屬於穩定 ABI的一部分。

返回 *o* 的第 *i* 個元素,失敗時返回 NULL。這等效於 Python 表示式 o[i]

PyObject *PySequence_GetSlice(PyObject *o, Py_ssize_t i1, Py_ssize_t i2)
返回值:新引用。屬於穩定 ABI的一部分。

返回序列物件 *o* 中 *i1* 和 *i2* 之間的切片,失敗時返回 NULL。這等效於 Python 表示式 o[i1:i2]

int PySequence_SetItem(PyObject *o, Py_ssize_t i, PyObject *v)
屬於穩定 ABI的一部分。

將物件 *v* 賦值給 *o* 的第 *i* 個元素。失敗時引發異常並返回 -1;成功時返回 0。這等效於 Python 語句 o[i] = v。此函式 *不會* 竊取對 *v* 的引用。

如果 *v* 是 NULL,則會刪除該元素,但此功能已棄用,建議使用 PySequence_DelItem()

int PySequence_DelItem(PyObject *o, Py_ssize_t i)
屬於穩定 ABI的一部分。

刪除物件 *o* 的第 *i* 個元素。失敗時返回 -1。這等效於 Python 語句 del o[i]

int PySequence_SetSlice(PyObject *o, Py_ssize_t i1, Py_ssize_t i2, PyObject *v)
屬於穩定 ABI的一部分。

將序列物件 v 賦值給序列物件 o 中從 i1i2 的切片。這等價於 Python 語句 o[i1:i2] = v

int PySequence_DelSlice(PyObject *o, Py_ssize_t i1, Py_ssize_t i2)
屬於穩定 ABI的一部分。

刪除序列物件 o 中從 i1i2 的切片。失敗時返回 -1。這等價於 Python 語句 del o[i1:i2]

Py_ssize_t PySequence_Count(PyObject *o, PyObject *value)
屬於穩定 ABI的一部分。

返回 valueo 中出現的次數,也就是返回滿足 o[key] == value 的鍵的數量。失敗時,返回 -1。這等價於 Python 表示式 o.count(value)

int PySequence_Contains(PyObject *o, PyObject *value)
屬於穩定 ABI的一部分。

確定 o 是否包含 value。如果 o 中的某個項等於 value,則返回 1,否則返回 0。發生錯誤時,返回 -1。這等價於 Python 表示式 value in o

Py_ssize_t PySequence_Index(PyObject *o, PyObject *value)
屬於穩定 ABI的一部分。

返回滿足 o[i] == value 的第一個索引 i。發生錯誤時,返回 -1。這等價於 Python 表示式 o.index(value)

PyObject *PySequence_List(PyObject *o)
返回值:新引用。屬於穩定 ABI的一部分。

返回一個列表物件,其內容與序列或可迭代物件 o 相同,或者在失敗時返回 NULL。返回的列表保證是新的。這等價於 Python 表示式 list(o)

PyObject *PySequence_Tuple(PyObject *o)
返回值:新引用。屬於穩定 ABI的一部分。

返回一個元組物件,其內容與序列或可迭代物件 o 相同,或者在失敗時返回 NULL。如果 o 是一個元組,則會返回一個新的引用,否則將構造一個具有適當內容的元組。這等價於 Python 表示式 tuple(o)

PyObject *PySequence_Fast(PyObject *o, const char *m)
返回值:新引用。屬於穩定 ABI的一部分。

將序列或可迭代物件 o 返回為可供其他 PySequence_Fast* 函式系列使用的物件。如果該物件不是序列或可迭代物件,則會引發 TypeError,並使用 m 作為訊息文字。失敗時返回 NULL

之所以將 PySequence_Fast* 函式這樣命名,是因為它們假定 o 是一個 PyTupleObject 或一個 PyListObject,並且直接訪問 o 的資料欄位。

作為 CPython 實現的細節,如果 o 已經是一個序列或列表,則會直接返回它。

Py_ssize_t PySequence_Fast_GET_SIZE(PyObject *o)

返回 o 的長度,假設 o 是由 PySequence_Fast() 返回的,並且 o 不是 NULL。也可以透過在 o 上呼叫 PySequence_Size() 來檢索大小,但是 PySequence_Fast_GET_SIZE() 更快,因為它假設 o 是列表或元組。

PyObject *PySequence_Fast_GET_ITEM(PyObject *o, Py_ssize_t i)
返回值:借用引用。

返回 o 的第 i 個元素,假設 o 是由 PySequence_Fast() 返回的,o 不是 NULL,並且 i 在邊界內。

PyObject **PySequence_Fast_ITEMS(PyObject *o)

返回 PyObject 指標的底層陣列。假設 o 是由 PySequence_Fast() 返回的,並且 o 不是 NULL

請注意,如果列表調整了大小,重新分配可能會重新定位項陣列。因此,只能在序列無法更改的上下文中使用底層陣列指標。

PyObject *PySequence_ITEM(PyObject *o, Py_ssize_t i)
返回值:新引用。

返回 o 的第 i 個元素,如果失敗則返回 NULL。它是 PySequence_GetItem() 的更快形式,但不會檢查 oPySequence_Check() 是否為真,也不會調整負索引。