切片對象?
-
PyTypeObject PySlice_Type?
- Part of the Stable ABI.
切片對象的類(lèi)型對象。 它與 Python 層面的
slice
是相同的對象。
-
PyObject *PySlice_New(PyObject *start, PyObject *stop, PyObject *step)?
- Return value: New reference. Part of the Stable ABI.
返回一個(gè)具有給定值的新切片對象。 start, stop 和 step 形參會(huì )被用作 slice 對象相應名稱(chēng)的屬性的值。 這些值中的任何一個(gè)都可以為
NULL
,在這種情況下將使用None
作為對應屬性的值。 如果新對象無(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.
從切片對象 slice 提取 start, stop 和 step 索引號,將序列長(cháng)度視為 length。 大于 length 的序列號將被當作錯誤。
成功時(shí)返回
0
,出錯時(shí)返回-1
并且不設置異常(除非某個(gè)序列號不為None
且無(wú)法被轉換為整數,在這種情況下會(huì )返回-1
并且設置一個(gè)異常)。你可能不會(huì )打算使用此函數。
在 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()
的可用替代。 從切片對象 slice 提取 start, stop 和 step 索引號,將序列長(cháng)度視為 length,并將切片的長(cháng)度保存在 slicelength 中,超出范圍的索引號會(huì )以與普通切片一致的方式進(jìn)行剪切。成功時(shí)返回
0
,出錯時(shí)返回-1
并且不設置異常。備注
此函數對于可變大小序列來(lái)說(shuō)是不安全的。 對它的調用應被替換為
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
未設置或設置為0x03050400
與0x03060000
之間的值(不包括邊界)或0x03060100
或更大則 !PySlice_GetIndicesEx 會(huì )被實(shí)現為一個(gè)使用 !PySlice_Unpack 和 !PySlice_AdjustIndices 的宏。 參數 start, stop 和 step 會(huì )被多被求值。3.6.1 版后已移除: 如果
Py_LIMITED_API
設置為小于0x03050400
或0x03060000
與0x03060100
之間的值(不包括邊界)則 !PySlice_GetIndicesEx 為已棄用的函數。
-
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.
從切片對象中將 start, stop 和 step 數據成員提取為 C 整數。 會(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
。出錯時(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 切片索引號根據指定的序列長(cháng)度進(jìn)行調整。 超出范圍的索引號會(huì )以與普通切片一致的方式進(jìn)行剪切。
返回切片的長(cháng)度。 此操作總是會(huì )成功。 不會(huì )調用 Python 代碼。
3.6.1 新版功能.