切片对象 – 具体对象层(Python教程)(参考资料)
切片对象
- PyObject *
PySlice_New
( PyObject *start,PyObject *stop,PyObject *step) - Return value: New reference.
返回具有给定值的新切片对象。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) - 从切片对象slice,假设一系列长度length。对待指数大于length作为错误
返回
0
成功与-1
没有异常设置的错误(除非其中一个索引不是None
并且未能转换为整数,在这种情况下-1
返回异常集).您可能不想使用此功能.
更改版本3.2: slice参数的参数类型为
PySliceObject*
before.
- 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()
。从切片对象slice假设一个长度为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.6.1:如果
Py_LIMITED_API
未设置或设置为0x03050400
和0x03060000
(不包括)或0x03060100
或更高PySlice_GetIndicesEx()
使用PySlice_Unpack()
和PySlice_AdjustIndices()
.Arguments start, stop和step被评估不止一次.从版本3.6.1开始不推荐使用:如果
Py_LIMITED_API
设置为小于的值0x03050400
或者0x03060000
和0x03060100
(不包括)PySlice_GetIndicesEx()
是一个不赞成使用的功能.
评论被关闭。