[2] | 1 | .. highlightlang:: c
|
---|
| 2 |
|
---|
| 3 | .. _slice-objects:
|
---|
| 4 |
|
---|
| 5 | Slice Objects
|
---|
| 6 | -------------
|
---|
| 7 |
|
---|
| 8 |
|
---|
[391] | 9 | .. c:var:: PyTypeObject PySlice_Type
|
---|
[2] | 10 |
|
---|
| 11 | .. index:: single: SliceType (in module types)
|
---|
| 12 |
|
---|
| 13 | The type object for slice objects. This is the same as ``slice`` and
|
---|
| 14 | ``types.SliceType``.
|
---|
| 15 |
|
---|
| 16 |
|
---|
[391] | 17 | .. c:function:: int PySlice_Check(PyObject *ob)
|
---|
[2] | 18 |
|
---|
| 19 | Return true if *ob* is a slice object; *ob* must not be *NULL*.
|
---|
| 20 |
|
---|
| 21 |
|
---|
[391] | 22 | .. c:function:: PyObject* PySlice_New(PyObject *start, PyObject *stop, PyObject *step)
|
---|
[2] | 23 |
|
---|
| 24 | Return a new slice object with the given values. The *start*, *stop*, and
|
---|
| 25 | *step* parameters are used as the values of the slice object attributes of
|
---|
| 26 | the same names. Any of the values may be *NULL*, in which case the
|
---|
| 27 | ``None`` will be used for the corresponding attribute. Return *NULL* if
|
---|
| 28 | the new object could not be allocated.
|
---|
| 29 |
|
---|
| 30 |
|
---|
[391] | 31 | .. c:function:: int PySlice_GetIndices(PySliceObject *slice, Py_ssize_t length, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step)
|
---|
[2] | 32 |
|
---|
| 33 | Retrieve the start, stop and step indices from the slice object *slice*,
|
---|
| 34 | assuming a sequence of length *length*. Treats indices greater than
|
---|
| 35 | *length* as errors.
|
---|
| 36 |
|
---|
| 37 | Returns 0 on success and -1 on error with no exception set (unless one of
|
---|
| 38 | the indices was not :const:`None` and failed to be converted to an integer,
|
---|
| 39 | in which case -1 is returned with an exception set).
|
---|
| 40 |
|
---|
| 41 | You probably do not want to use this function. If you want to use slice
|
---|
| 42 | objects in versions of Python prior to 2.3, you would probably do well to
|
---|
[391] | 43 | incorporate the source of :c:func:`PySlice_GetIndicesEx`, suitably renamed,
|
---|
[2] | 44 | in the source of your extension.
|
---|
| 45 |
|
---|
| 46 | .. versionchanged:: 2.5
|
---|
[391] | 47 | This function used an :c:type:`int` type for *length* and an
|
---|
| 48 | :c:type:`int *` type for *start*, *stop*, and *step*. This might require
|
---|
[2] | 49 | changes in your code for properly supporting 64-bit systems.
|
---|
| 50 |
|
---|
| 51 |
|
---|
[391] | 52 | .. c:function:: int PySlice_GetIndicesEx(PySliceObject *slice, Py_ssize_t length, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step, Py_ssize_t *slicelength)
|
---|
[2] | 53 |
|
---|
[391] | 54 | Usable replacement for :c:func:`PySlice_GetIndices`. Retrieve the start,
|
---|
[2] | 55 | stop, and step indices from the slice object *slice* assuming a sequence of
|
---|
| 56 | length *length*, and store the length of the slice in *slicelength*. Out
|
---|
| 57 | of bounds indices are clipped in a manner consistent with the handling of
|
---|
| 58 | normal slices.
|
---|
| 59 |
|
---|
| 60 | Returns 0 on success and -1 on error with exception set.
|
---|
| 61 |
|
---|
| 62 | .. versionadded:: 2.3
|
---|
| 63 |
|
---|
| 64 | .. versionchanged:: 2.5
|
---|
[391] | 65 | This function used an :c:type:`int` type for *length* and an
|
---|
| 66 | :c:type:`int *` type for *start*, *stop*, *step*, and *slicelength*. This
|
---|
[2] | 67 | might require changes in your code for properly supporting 64-bit
|
---|
| 68 | systems.
|
---|