切片对象¶
-
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
是不朽的。