切片对象¶
- 
PyTypeObject PySlice_Type¶
- 切片对象的类型对象。 它与 Python 层面的 - slice是相同的对象。
- 
PyObject* PySlice_New(PyObject *start, PyObject *stop, PyObject *step)¶
- Return value: New reference.返回一个具有给定值的新 slice 对象。 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)¶
- 从 slice 对象 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)¶
- PySlice_GetIndices()的可用替代。 从 slice 对象 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)¶
- 从切片对象中将 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)¶
- 将 start/end 切片索引号根据指定的序列长度进行调整。 超出范围的索引号会以与普通切片一致的方式进行剪切。 - 返回切片的长度。 此操作总是会成功。 不会调用 Python 代码。 - 3.6.1 新版功能. 
