# Objetos rebanada (slice)

PyTypeObject PySlice_Type
  Part of the Stable ABI.

  El objeto tipo para objetos rebanadas. Esto es lo mismo que `slice` en la capa de Python.

int PySlice_Check(PyObject *ob)

  Retorna verdadero si ob es un objeto rebanada; ob no debe ser `NULL`. Esta función siempre finaliza con éxito.

PyObject *PySlice_New(PyObject *start, PyObject *stop, PyObject *step)
  Return value: New reference. Part of the Stable ABI.

  Retorna un nuevo objeto rebanada con los valores dados. Los parámetros start, stop y step se utilizan como los valores de los atributos del objeto rebanada de los mismos nombres. Cualquiera de los valores puede ser `NULL`, en cuyo caso se usará `None` para el atributo correspondiente. Retorna `NULL` si no se puedo asignar el nuevo objeto.

int PySlice_GetIndices(PyObject *slice, Py_ssize_t length, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step)
  Part of the Stable ABI.

  Recupera los índices start, stop y step del objeto rebanada slice, suponiendo una secuencia de longitud length. Trata los índices mayores que length como errores.

  Returns `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).

  Probablemente no quiera usar esta función.

  Distinto en la versión 3.2: El tipo de parámetro para el parámetro slice era `PySliceObject*` antes.

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)
  Part of the Stable ABI.

  Reemplazo utilizable para `PySlice_GetIndices()`. Recupera los índices de start, stop, y step del objeto rebanada slice asumiendo una secuencia de longitud length, y almacena la longitud de la rebanada en slicelength. Los índices fuera de los límites se recortan de manera coherente con el manejo de sectores normales.

  Retorna `0` en caso de éxito y `-1` en caso de error con excepción establecida.

  Nota

  Esta función se considera no segura para secuencias redimensionables. Su invocación debe ser reemplazada por una combinación de `PySlice_Unpack()` y `PySlice_AdjustIndices()` donde:

      if (PySlice_GetIndicesEx(slice, length, &start, &stop, &step, &slicelength) < 0) {
          // return error
      }

  es reemplazado por:

      if (PySlice_Unpack(slice, &start, &stop, &step) < 0) {
          // return error
      }
      slicelength = PySlice_AdjustIndices(length, &start, &stop, step);

  Distinto en la versión 3.2: El tipo de parámetro para el parámetro slice era `PySliceObject*` antes.

  Distinto en la versión 3.6.1: Si `Py_LIMITED_API` no se establece o establece el valor entre `0x03050400` y `0x03060000` (sin incluir) o `0x03060100` o un superior `PySlice_GetIndicesEx()` se implementa como un macro usando `PySlice_Unpack()` y `PySlice_AdjustIndices()`. Los argumentos start, stop y step se evalúan más de una vez.

  Obsoleto desde la versión 3.6.1: Si `Py_LIMITED_API` se establece en un valor menor que `0x03050400` o entre `0x03060000` y `0x03060100` (sin incluir) `PySlice_GetIndicesEx()` es una función obsoleta.

int PySlice_Unpack(PyObject *slice, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step)
  Part of the Stable ABI since version 3.7.

  Extrae los miembros de datos start, stop, y step de un objeto rebanada como enteros en C. Reduce silenciosamente los valores mayores que `PY_SSIZE_T_MAX` a `PY_SSIZE_T_MAX`, aumenta silenciosamente los valores start y stop inferiores a `PY_SSIZE_T_MIN` a `PY_SSIZE_T_MIN`, y silenciosamente aumenta los valores de step a menos de `-PY_SSE` a `-PY_SSIZE_T_MAX`.

  Retorna `-1` en caso de error, `0` en caso de éxito.

  Nuevo en la versión 3.6.1.

Py_ssize_t PySlice_AdjustIndices(Py_ssize_t length, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t step)
  Part of the Stable ABI since version 3.7.

  Ajusta los índices de corte de inicio/fin asumiendo una secuencia de la longitud especificada. Los índices fuera de los límites se recortan de manera coherente con el manejo de sectores normales.

  Retorna la longitud de la rebanada. Siempre exitoso. No llama al código de Python.

  Nuevo en la versión 3.6.1.

## Objeto elipsis

PyObject *Py_Ellipsis

  El objeto `Elipsis` de Python. Este objeto no tiene métodos. Debe tratarse como cualquier otro objeto con respecto a los recuentos de referencia. Como `Py_None` es un objeto singleton.