切片對(duì)象?
-
PyTypeObject
PySlice_Type? 切片對(duì)象的類型對(duì)象。 它與 Python 層面的
slice是相同的對(duì)象。
-
PyObject*
PySlice_New(PyObject?*start, PyObject?*stop, PyObject?*step)? - Return value: New reference.
返回一個(gè)具有給定值的新 slice 對(duì)象。 start, stop 和 step 形參會(huì)被用作 slice 對(duì)象相應(yī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)? 從 slice 對(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 形參的形參類型是
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)? PySlice_GetIndices()的可用替代。 從 slice 對(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 形參的形參類型是
PySliceObject*。在 3.6.1 版更改: 如果
Py_LIMITED_API未設(shè)置或設(shè)置為0x03050400與0x03060000之前的值(不包含邊界)或0x03060100或更大則PySlice_GetIndicesEx()會(huì)被實(shí)現(xiàn)為一個(gè)使用PySlice_Unpack()和PySlice_AdjustIndices()的宏。 參數(shù) start, stop 和 step 會(huì)被多被求值。3.6.1 版后已移除: 如果
Py_LIMITED_API設(shè)置為小于0x03050400或0x03060000與0x03060100之間的值(不包括邊界)則PySlice_GetIndicesEx()為已棄用的函數(shù)。
-
int
PySlice_Unpack(PyObject?*slice, Py_ssize_t?*start, Py_ssize_t?*stop, Py_ssize_t?*step)? 從切片對(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)? 將 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 新版功能.
