切片物件

PyTypeObject PySlice_Type
屬於 穩定 ABI 的一部分。

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

int PySlice_Check(PyObject *ob)

如果 *ob* 是一個切片物件則返回真;*ob* 不得為 NULL。此函式總是成功。

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

返回一個帶有給定值的新切片物件。*start*、*stop* 和 *step* 引數用作同名切片物件屬性的值。任何值都可以是 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* 中檢索起始、停止和步長索引,假設序列的長度為 *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* 中檢索起始、停止和步長索引,假設序列的長度為 *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() 的宏。引數 *start*、*stop* 和 *step* 會被多次求值。

自 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 的一部分。

從切片物件中提取起始、停止和步長資料成員作為 C 整數。將大於 PY_SSIZE_T_MAX 的值靜默地減小為 PY_SSIZE_T_MAX,將小於 PY_SSIZE_T_MIN 的起始和停止值靜默地提升為 PY_SSIZE_T_MIN,並將小於 -PY_SSIZE_T_MAX 的步長值靜默地提升為 -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 的一部分。

調整起始/結束切片索引,假設序列的長度為指定長度。超出邊界的索引將以與處理普通切片一致的方式進行裁剪。

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

在 3.6.1 版本中新增。

省略號物件

PyObject *Py_Ellipsis

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

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