切片物件

PyTypeObjectPySlice_Type
穩定 ABI 的一部分.

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

intPySlice_Check(PyObject*ob)

如果ob 是 slice 物件,則回傳 true;ob 不能是NULL 。此函式永遠成功。

PyObject*PySlice_New(PyObject*start,PyObject*stop,PyObject*step)
回傳值:新的參照。穩定 ABI 的一部分.

以指定的值回傳一個新的切片物件。startstopstep 參數會被用為同名的 slice 物件屬性值。任何值都可能是NULL,在這種情況下,None 將用於相對應的屬性。

如果無法分配新物件,則回傳NULL 並設定例外。

intPySlice_GetIndices(PyObject*slice,Py_ssize_tlength,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*

intPySlice_GetIndicesEx(PyObject*slice,Py_ssize_tlength,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 沒有設定或設定為0x030504000x03060000 (不包括) 或0x03060100 或更高的值PySlice_GetIndicesEx() 是使用PySlice_Unpack()PySlice_AdjustIndices() 來實作一個巨集。引數startstopstep 會被計算多次。

在 3.6.1 版之後被棄用:如果Py_LIMITED_API 設定為小於0x03050400 或介於0x030600000x03060100 之間 (不包括邊界值)PySlice_GetIndicesEx() 是一個已廢棄的函式。

intPySlice_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_tPySlice_AdjustIndices(Py_ssize_tlength,Py_ssize_t*start,Py_ssize_t*stop,Py_ssize_tstep)
穩定 ABI 的一部分 自 3.7 版本開始.

假設序列長度為指定長度,調整開始/結束切片索引。超出範圍的索引會以與處理正常切片一致的方式切除。

回傳切片的長度。永遠成功。不呼叫 Python 程式碼。

在 3.6.1 版被加入.

Ellipsis 物件

PyTypeObjectPyEllipsis_Type
穩定 ABI 的一部分.

PythonEllipsis 物件的型別。與 Python 層中的types.EllipsisType 相同。

PyObject*Py_Ellipsis

PythonEllipsis 物件。這個物件沒有方法。就像Py_None 一樣,它是一個immortal 單一物件。

在 3.12 版的變更:Py_Ellipsis 為不滅的 (immortal)。