切片對(duì)象?

PyTypeObject PySlice_Type?
Part of the Stable ABI.

切片對(duì)象的類(lèi)型對(duì)象。 它與 Python 層面的 slice 是相同的對(duì)象。

int PySlice_Check(PyObject *ob)?

如果 ob 是一個(gè) slice 對(duì)象則返回真值;ob 必須不為 NULL。 此函數(shù)總是會(huì)成功執(zhí)行。

PyObject *PySlice_New(PyObject *start, PyObject *stop, PyObject *step)?
Return value: New reference. Part of the Stable ABI.

返回一個(gè)具有給定值的新切片對(duì)象。 start, stopstep 形參會(huì)被用作 slice 對(duì)象相應(yīng)名稱(chēng)的屬性的值。 這些值中的任何一個(gè)都可以為 NULL,在這種情況下將使用 None 作為對(duì)應(yīng)屬性的值。 如果新對(duì)象無(wú)法被分配則返回 NULL

int PySlice_GetIndices(PyObject *slice, Py_ssize_t length, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step)?
Part of the Stable ABI.

從切片對(duì)象 slice 提取 start, stop 和 step 索引號(hào),將序列長(zhǎng)度視為 length。 大于 length 的序列號(hào)將被當(dāng)作錯(cuò)誤。

成功時(shí)返回 0,出錯(cuò)時(shí)返回 -1 并且不設(shè)置異常(除非某個(gè)序列號(hào)不為 None 且無(wú)法被轉(zhuǎn)換為整數(shù),在這種情況下會(huì)返回 -1 并且設(shè)置一個(gè)異常)。

你可能不會(huì)打算使用此函數(shù)。

在 3.2 版更改: 之前 slice 形參的形參類(lèi)型是 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)?
Part of the Stable ABI.

PySlice_GetIndices() 的可用替代。 從切片對(duì)象 slice 提取 start, stop 和 step 索引號(hào),將序列長(zhǎng)度視為 length,并將切片的長(zhǎng)度保存在 slicelength 中,超出范圍的索引號(hào)會(huì)以與普通切片一致的方式進(jìn)行剪切。

成功時(shí)返回 0,出錯(cuò)時(shí)返回 -1 并且不設(shè)置異常。

備注

此函數(shù)對(duì)于可變大小序列來(lái)說(shuō)是不安全的。 對(duì)它的調(diào)用應(yīng)被替換為 PySlice_Unpack()PySlice_AdjustIndices() 的組合,其中

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

會(huì)被替換為

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

在 3.2 版更改: 之前 slice 形參的形參類(lèi)型是 PySliceObject*。

在 3.6.1 版更改: 如果 Py_LIMITED_API 未設(shè)置或設(shè)置為 0x030504000x03060000 之間的值(不包括邊界)或 0x03060100 或更大則 !PySlice_GetIndicesEx 會(huì)被實(shí)現(xiàn)為一個(gè)使用 !PySlice_Unpack!PySlice_AdjustIndices 的宏。 參數(shù) start, stopstep 會(huì)被多被求值。

3.6.1 版后已移除: 如果 Py_LIMITED_API 設(shè)置為小于 0x030504000x030600000x03060100 之間的值(不包括邊界)則 !PySlice_GetIndicesEx 為已棄用的函數(shù)。

int PySlice_Unpack(PyObject *slice, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step)?
Part of the Stable ABI since version 3.7.

從切片對(duì)象中將 start, stop 和 step 數(shù)據(jù)成員提取為 C 整數(shù)。 會(huì)靜默地將大于 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。

出錯(cuò)時(shí)返回 -1,成功時(shí)返回 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)?
Part of the Stable ABI since version 3.7.

將 start/end 切片索引號(hào)根據(jù)指定的序列長(zhǎng)度進(jìn)行調(diào)整。 超出范圍的索引號(hào)會(huì)以與普通切片一致的方式進(jìn)行剪切。

返回切片的長(zhǎng)度。 此操作總是會(huì)成功。 不會(huì)調(diào)用 Python 代碼。

3.6.1 新版功能.

Ellipsis 對(duì)象?

PyObject *Py_Ellipsis?

Python 的 Ellipsis 對(duì)象。 該對(duì)象沒(méi)有任何方法。 它必須以與任何其他對(duì)象一樣的方式遵循引用計(jì)數(shù)。 它與 Py_None 一樣屬于單例對(duì)象。