PySlice_Type
¶
The type object for slice objects. This is the same as
slice
在 Python 层。
PySlice_Check
(
PyObject
*ob
)
¶
返回 True 若
ob
is a slice object;
ob
必须不是
NULL
. This function always succeeds.
PySlice_New
(
PyObject
*start
,
PyObject
*stop
,
PyObject
*step
)
¶
Return a new slice object with the given values. The
start
,
stop
,和
step
parameters are used as the values of the slice object attributes of the same names. Any of the values may be
NULL
, in which case the
None
will be used for the corresponding attribute. Return
NULL
if the new object could not be allocated.
PySlice_GetIndices
(
PyObject
*slice
, Py_ssize_t
length
, Py_ssize_t
*start
, Py_ssize_t
*stop
, Py_ssize_t
*step
)
¶
Retrieve the start, stop and step indices from the slice object slice , assuming a sequence of length length . Treats indices greater than length as errors.
返回
0
on success and
-1
on error with no exception set (unless one of the indices was not
None
and failed to be converted to an integer, in which case
-1
is returned with an exception set).
You probably do not want to use this function.
3.2 版改变:
The parameter type for the
slice
parameter was
PySliceObject*
before.
PySlice_GetIndicesEx
(
PyObject
*slice
, Py_ssize_t
length
, Py_ssize_t
*start
, Py_ssize_t
*stop
, Py_ssize_t
*step
, Py_ssize_t
*slicelength
)
¶
Usable replacement for
PySlice_GetIndices()
. Retrieve the start, stop, and step indices from the slice object
slice
assuming a sequence of length
length
, and store the length of the slice in
slicelength
. Out of bounds indices are clipped in a manner consistent with the handling of normal slices.
返回
0
on success and
-1
on error with exception set.
注意
This function is considered not safe for resizable sequences. Its invocation should be replaced by a combination of
PySlice_Unpack()
and
PySlice_AdjustIndices()
where
if (PySlice_GetIndicesEx(slice, length, &start, &stop, &step, &slicelength) < 0) {
// return error
}
is replaced by
if (PySlice_Unpack(slice, &start, &stop, &step) < 0) {
// return error
}
slicelength = PySlice_AdjustIndices(length, &start, &stop, step);
3.2 版改变:
The parameter type for the
slice
parameter was
PySliceObject*
before.
3.6.1 版改变:
若
Py_LIMITED_API
is not set or set to the value between
0x03050400
and
0x03060000
(not including) or
0x03060100
or higher
PySlice_GetIndicesEx()
is implemented as a macro using
PySlice_Unpack()
and
PySlice_AdjustIndices()
. Arguments
start
,
stop
and
step
are evaluated more than once.
Deprecated since version 3.6.1:
若
Py_LIMITED_API
is set to the value less than
0x03050400
or between
0x03060000
and
0x03060100
(not including)
PySlice_GetIndicesEx()
is a deprecated function.
PySlice_Unpack
(
PyObject
*slice
, Py_ssize_t
*start
, Py_ssize_t
*stop
, Py_ssize_t
*step
)
¶
Extract the start, stop and step data members from a slice object as C integers. Silently reduce values larger than
PY_SSIZE_T_MAX
to
PY_SSIZE_T_MAX
, silently boost the start and stop values less than
PY_SSIZE_T_MIN
to
PY_SSIZE_T_MIN
, and silently boost the step values less than
-PY_SSIZE_T_MAX
to
-PY_SSIZE_T_MAX
.
返回
-1
当出错时,
0
当成功时。
3.6.1 版新增。
PySlice_AdjustIndices
(
Py_ssize_t
length
, Py_ssize_t
*start
, Py_ssize_t
*stop
, Py_ssize_t
step
)
¶
Adjust start/end slice indices assuming a sequence of the specified length. Out of bounds indices are clipped in a manner consistent with the handling of normal slices.
Return the length of the slice. Always successful. Doesn’t call Python code.
3.6.1 版新增。