On this page
Slice Objects
PyTypeObject
PySlice_Type
- 切片对象的类型对象。这与 Python 层中的slice相同。
int
PySlice_Check
(PyObject ** ob *)- 如果* ob *是切片对象,则返回 true;否则,返回 true。 * ob *不得为
NULL
。
- 如果* ob *是切片对象,则返回 true;否则,返回 true。 * ob *不得为
PyObject *
PySlice_New
(PyObject 开始,PyObject* 停止*,PyObject *步骤)- 返回值:新参考.
返回具有给定值的新 slice 对象。参数* 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 *)- 假设长度为 length * length ,则从切片对象 slice 检索开始,停止和步进索引。将大于 length *的索引视为错误。
如果成功,则返回0
,如果没有错误,则返回-1
,且未设置任何异常(除非其中一个索引不是None且未能转换为整数,在这种情况下,将返回-1
并设置了异常)。
您可能不想使用此Function。
在版本 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 *)- 可用的替代PySlice_GetIndices()。假定长度为 length * length ,从切片对象 slice 检索开始,停止和步长索引,并将切片的长度存储在 slicelength *中。超出范围的索引将以与常规切片的处理一致的方式进行裁剪。
如果设置了异常,则返回0
成功,返回-1
错误。
Note
对于可调整大小的序列,此Function不安全。应将其调用替换为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()
是不推荐使用的Function。
- int
PySlice_Unpack
(PyObject *slice ,Py_ssize_t start *,Py_ssize_t *stop ,Py_ssize_t step *)- 从切片对象中将开始,停止和步进数据成员提取为 C 整数。静默将大于
PY_SSIZE_T_MAX
的值减小到PY_SSIZE_T_MAX
,静默将小于PY_SSIZE_T_MIN
的开始和停止值增大到PY_SSIZE_T_MIN
,并静默将小于-PY_SSIZE_T_MAX
的步长增大到-PY_SSIZE_T_MAX
。
- 从切片对象中将开始,停止和步进数据成员提取为 C 整数。静默将大于
错误返回-1
,成功返回0
。
版本 3.6.1 中的新Function。
- Py_ssize_t
PySlice_AdjustIndices
(Py_ssize_t * length *,Py_ssize_t *start ,Py_ssize_t stop *,Py_ssize_t * step *)- 假设指定长度的序列调整开始/结束切片索引。超出范围的索引将以与常规切片的处理一致的方式进行裁剪。
返回切片的长度。永远成功。不调用 Python 代码。
版本 3.6.1 中的新Function。