切片物件¶
-
PyTypeObject PySlice_Type¶
- 作為 穩定 ABI 的一部分。
切片物件的型別物件。這與 Python 層中的
slice
相同。
-
PyObject *PySlice_New(PyObject *start, PyObject *stop, PyObject *step)¶
- 返回值: 新引用。 穩定ABI 的一部分。
返回一個具有給定值的新切片物件。start、stop 和 step 引數用作同名切片物件屬性的值。任何值都可以是
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 中檢索 start、stop 和 step 索引,假設序列長度為 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()
的可用替代品。從切片物件 slice 中檢索 start、stop 和 step 索引,假設序列長度為 length,並將切片的長度儲存在 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)¶
- 自 3.7 版本起成為 穩定ABI 的一部分。
從切片物件中提取 start、stop 和 step 資料成員作為 C 整數。靜默地將大於
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
。錯誤時返回
-1
並設定異常,成功時返回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)¶
- 自 3.7 版本起成為 穩定ABI 的一部分。
根據指定長度的序列調整 start/end 切片索引。超出邊界的索引以與處理正常切片一致的方式進行裁剪。
返回切片的長度。總是成功的。不呼叫 Python 程式碼。
在 3.6.1 版本中新增。
省略號物件¶
-
PyTypeObject PyEllipsis_Type¶
- 作為 穩定 ABI 的一部分。
Python
Ellipsis
物件的型別。與 Python 層中的types.EllipsisType
相同。
-
PyObject *Py_Ellipsis¶
Python
Ellipsis
物件。此物件沒有方法。與Py_None
一樣,它是一個 不朽的 單例物件。在 3.12 版本中更改:
Py_Ellipsis
是不朽的。