切片对象¶

PyTypeObject PySlice_Type¶
属于 稳定 ABI.

切片对象的类型对象。 它与 Python 层�的 slice 是相�的对象。

int PySlice_Check(PyObject *ob)¶

如果 ob 是一个 slice 对象则返回真值;ob 必须�为 NULL。 此函数总是会�功执行。

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 �� 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)¶
属于 稳定 ABI 自 3.7 版开始.

从切片对象中将 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)¶
属于 稳定 ABI 自 3.7 版开始.

将 start/end 切片索引�根�指定的�列长度进行调整。 超出范围的索引�会以与普通切片一致的方�进行剪切。

返回切片的长度。 此�作总是会�功。 �会调用 Python 代�。

在 3.6.1 版本加入.

Ellipsis 对象¶

PyObject *Py_Ellipsis¶

Python Ellipsis 对象。 此没有没有任何方法。 � Py_None 一样,它是一个 永久性对象immortal。 并且属于�例对象。

在 3.12 版本�生�更: Py_Ellipsis 是永久性对象。