切片物件

PyTypeObject PySlice_Type
作為 穩定 ABI 的一部分。

切片物件的型別物件。這與 Python 層中的 slice 相同。

int PySlice_Check(PyObject *ob)

如果 ob 是切片物件,則返回 true;ob 不得為 NULL。此函式總是成功的。

PyObject *PySlice_New(PyObject *start, PyObject *stop, PyObject *step)
返回值: 新引用。 穩定ABI 的一部分。

返回一個具有給定值的新切片物件。startstopstep 引數用作同名切片物件屬性的值。任何值都可以是 NULL,在這種情況下,將為相應的屬性使用 None

如果無法分配新物件,則返回 NULL 並設定異常。

int PySlice_GetIndices(PyObject *slice, Py_ssize_t length, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step)
作為 穩定 ABI 的一部分。

從切片物件 slice 中檢索 start、stop 和 step 索引,假設序列長度為 length。將大於 length 的索引視為錯誤。

成功時返回 0,錯誤時返回 -1,不設定異常(除非其中一個索引不是 None 並且未能轉換為整數,在這種情況下返回 -1 並設定異常)。

您可能不想使用此函式。

在 3.2 版本中更改: slice 引數的引數型別以前是 PySliceObject*

int PySlice_GetIndicesEx(PyObject *slice, Py_ssize_t length, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step, Py_ssize_t *slicelength)
作為 穩定 ABI 的一部分。

PySlice_GetIndices() 的可用替代品。從切片物件 slice 中檢索 start、stop 和 step 索引,假設序列長度為 length,並將切片的長度儲存在 slicelength 中。超出邊界的索引以與處理普通切片一致的方式被裁剪。

成功時返回 0,錯誤時返回 -1 並設定異常。

備註

此函式被認為對可變大小的序列不安全。它的呼叫應替換為 PySlice_Unpack()PySlice_AdjustIndices() 的組合,其中

if (PySlice_GetIndicesEx(slice, length, &start, &stop, &step, &slicelength) < 0) {
    // return error
}

被替換為

if (PySlice_Unpack(slice, &start, &stop, &step) < 0) {
    // return error
}
slicelength = PySlice_AdjustIndices(length, &start, &stop, step);

在 3.2 版本中更改: slice 引數的引數型別以前是 PySliceObject*

在 3.6.1 版本中更改: 如果未設定 Py_LIMITED_API 或將其設定為 0x030504000x03060000(不包括)之間或 0x03060100 或更高的值,則 PySlice_GetIndicesEx() 被實現為使用 PySlice_Unpack()PySlice_AdjustIndices() 的宏。引數 startstopstep 會被評估多次。

自 3.6.1 版本棄用: 如果 Py_LIMITED_API 設定為小於 0x03050400 或介於 0x030600000x03060100(不包括)之間的值,則 PySlice_GetIndicesEx() 是一個已棄用的函式。

int PySlice_Unpack(PyObject *slice, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step)
自 3.7 版本起成為 穩定ABI 的一部分。

從切片物件中提取 start、stop 和 step 資料成員作為 C 整數。靜默地將大於 PY_SSIZE_T_MAX 的值減小到 PY_SSIZE_T_MAX,靜默地將小於 PY_SSIZE_T_MIN 的 start 和 stop 值提升到 PY_SSIZE_T_MIN,靜默地將小於 -PY_SSIZE_T_MAX 的 step 值提升到 -PY_SSIZE_T_MAX

錯誤時返回 -1 並設定異常,成功時返回 0

在 3.6.1 版本中新增。

Py_ssize_t PySlice_AdjustIndices(Py_ssize_t length, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t step)
自 3.7 版本起成為 穩定ABI 的一部分。

根據指定長度的序列調整 start/end 切片索引。超出邊界的索引以與處理正常切片一致的方式進行裁剪。

返回切片的長度。總是成功的。不呼叫 Python 程式碼。

在 3.6.1 版本中新增。

省略號物件

PyTypeObject PyEllipsis_Type
作為 穩定 ABI 的一部分。

Python Ellipsis 物件的型別。與 Python 層中的 types.EllipsisType 相同。

PyObject *Py_Ellipsis

Python Ellipsis 物件。此物件沒有方法。與 Py_None 一樣,它是一個 不朽的 單例物件。

在 3.12 版本中更改: Py_Ellipsis 是不朽的。