切片物件¶
-
PyTypeObject PySlice_Type¶
- 為 穩定 ABI 的一部分.
slice 物件的型別物件。這與 Python 層中的
slice
相同。
-
PyObject *PySlice_New(PyObject *start, PyObject *stop, PyObject *step)¶
- 回傳值:新的參照。 為 穩定 ABI 的一部分.
以指定的值回傳一個新的切片物件。start、stop 及 step 參數會被用為同名的 slice 物件屬性值。任何值都可能是
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 物件 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()
。從假設序列長度為 length 的 slice 物件 slice 擷取開始、停止和步長索引,並將 slice 的長度存入 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
沒有設定或設定為0x03050400
和0x03060000
(不包括) 或0x03060100
或更高的值PySlice_GetIndicesEx()
是使用PySlice_Unpack()
和PySlice_AdjustIndices()
來實作一個巨集。引數 start、stop 和 step 會被計算多次。在 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)¶
- 為 穩定 ABI 的一部分 自 3.7 版本開始.
以 C 整數的形式從 slice 物件中抽取 start、stop 及 step 資料成員。將大於
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
。成功時回傳
0
,在失敗時回傳-1
並設定例外。在 3.6.1 版被加入.
-
Py_ssize_t PySlice_AdjustIndices(Py_ssize_t length, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t step)¶
- 為 穩定 ABI 的一部分 自 3.7 版本開始.
假設序列長度為指定長度,調整開始/結束切片索引。超出範圍的索引會以與處理正常切片一致的方式切除。
回傳切片的長度。永遠成功。不呼叫 Python 程式碼。
在 3.6.1 版被加入.
Ellipsis 物件¶
-
PyTypeObject PyEllipsis_Type¶
- 為 穩定 ABI 的一部分.
Python
Ellipsis
物件的型別。與 Python 層中的types.EllipsisType
相同。
-
PyObject *Py_Ellipsis¶
Python
Ellipsis
物件。這個物件沒有方法。就像Py_None
一樣,它是一個 immortal 單一物件。在 3.12 版的變更:
Py_Ellipsis
為不滅的 (immortal)。