切片对象¶
-
PyTypeObject PySlice_Type¶
切片对象的类型对象。这和
slice
在python层中。
-
PyObject *PySlice_New(PyObject *start, PyObject *stop, PyObject *step)¶
- Return value: New reference.
返回具有给定值的新切片对象。这个 开始 , 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)¶
从切片对象中检索开始、停止和步骤索引 片 ,假设一个长度序列 长度 . 治疗指数大于 长度 作为错误。
返回
0
论成功与否-1
出现错误,没有异常集(除非其中一个索引不是None
无法转换为整数,在这种情况下-1
返回异常集)。您可能不想使用此函数。
在 3.2 版更改: 的参数类型 片 参数为
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()
. 从切片对象检索开始、停止和步骤索引 片 假设一个长度序列 长度 ,并将切片的长度存储在 细长 . 以与正常切片处理一致的方式剪裁超出界限的索引。返回
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 版更改: 的参数类型 片 参数为
PySliceObject*
以前。在 3.6.1 版更改: 如果
Py_LIMITED_API
未设置或设置为介于0x03050400
和0x03060000
(不包括)或0x03060100
或更高 !PySlice_GetIndicesEx 是作为宏实现的,使用 !PySlice_Unpack 和 !PySlice_AdjustIndices . 参数 开始 , 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)¶
将切片对象中的开始、停止和步骤数据成员提取为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
.返回
-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)¶
调整开始/结束切片索引,假定一个指定长度的序列。以与正常切片处理一致的方式剪裁超出界限的索引。
返回切片的长度。总是成功的。不调用python代码。
3.6.1 新版功能.