This document is for an old version of Python that is no longer supported. You should upgrade, and read the Python documentation for the current stable release.

# Об’єкти фрагментів

PyTypeObject `PySlice_Type`

  Об’єкт типу для об’єктів фрагмента. Це те саме, що `slice` на рівні Python.

int `PySlice_Check`(PyObject *ob)

  Повертає true, якщо ob є об’єктом фрагмента; ob не має бути `NULL`. Ця функція завжди успішна.

PyObject* `PySlice_New`(PyObject *start, PyObject *stop, PyObject *step)
  Return value: New reference.

  Return a new slice object with the given values. The start, stop, and 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)

  Отримати індекси початку, зупинки та кроку з об’єкта фрагмента slice, припускаючи послідовність довжини length. Розглядає індекси, більші за length, як помилки.

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

  Ймовірно, ви не хочете використовувати цю функцію.

  Змінено в версії 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, припускаючи послідовність довжини length, і зберегти довжину фрагмента в slicelength. Індекси поза межами обрізаються таким чином, що відповідає обробці звичайних фрагментів.

  Returns `0` on success and `-1` on error with exception set.

  Примітка

  Ця функція вважається небезпечною для послідовностей змінного розміру. Його виклик слід замінити комбінацією `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)

  Витягти елементи даних початку, зупинки та кроку з об’єкта зрізу як цілі числа C. Безшумне зменшення значень, що перевищують `PY_SSIZE_T_MAX`, до `PY_SSIZE_T_MAX`, миттєве підвищення початкових і кінцевих значень, менших за `PY_SSIZE_T_MIN`, до `PY_SSIZE_T_MIN`, і миттєве збільшення значень кроку, менших за `-PY_SSIZE_T_MAX` до `-PY_SSIZE_T_MAX`.

  Return `-1` on error, `0` on success.

  Нове в версії 3.6.1.

Py_ssize_t `PySlice_AdjustIndices`(Py_ssize_t length, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t step)

  Налаштуйте початкові/кінцеві індекси фрагментів, припускаючи послідовність зазначеної довжини. Індекси поза межами обрізаються таким чином, що відповідає обробці звичайних фрагментів.

  Повернути довжину зрізу. Завжди успішний. Не викликає код Python.

  Нове в версії 3.6.1.

# Еліпсис

PyObject *`Py_Ellipsis`

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