切片对象

PyTypeObject PySlice_Type

The type object for slice objects. This is the same as slice 在 Python 层。

int PySlice_Check ( PyObject *ob )

返回 True 若 ob is a slice object; ob 必须不是 NULL . This function always succeeds.

PyObject * 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.

int 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.

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 )

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.

int 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 版新增。

Py_ssize_t 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 版新增。

省略对象

PyObject * Py_Ellipsis

Python Ellipsis object. This object has no methods. It needs to be treated just like any other object with respect to reference counts. Like Py_None it is a singleton object.

内容表

上一话题

描述符对象

下一话题

内存视图对象

本页