Python切片对象
PyTypeObject
PySlice_Type
¶切片对象的类型对象。 它与 Python 层面的
slice
是相同的对象。
int
PySlice_Check
(PyObject *ob)¶如果 ob 是一个 slice 对象则返回真值;ob 必须不为
NULL
。
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 新版功能.
Ellipsis 对象¶
PyObject *
Py_Ellipsis
¶Python 的
Ellipsis
对象。 该对象没有任何方法。 它必须以与任何其他对象一样的方式遵循引用计数。 它与Py_None
一样是单例对象。
以上是 Python切片对象 的全部内容, 来源链接: utcz.com/z/508101.html