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

PyTypeObject PySlice_Type
Part of the Stable ABI.

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

int PySlice_Check(PyObject *ob)

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

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

Повертає новий об’єкт фрагмента із заданими значеннями. Параметри start, stop і step використовуються як значення однойменних атрибутів об’єкта зрізу. Будь-яке зі значень може бути NULL, у цьому випадку None буде використано для відповідного атрибута. Повертає NULL, якщо новий об’єкт не може бути виділений.

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.

Отримати індекси початку, зупинки та кроку з об’єкта фрагмента 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)
Part of the Stable ABI.

Корисна заміна для PySlice_GetIndices(). Отримати індекси початку, зупинки та кроку з об’єкта фрагмента slice, припускаючи послідовність довжини length, і зберегти довжину фрагмента в slicelength. Індекси поза межами обрізаються таким чином, що відповідає обробці звичайних фрагментів.

Повертає 0 у разі успіху та -1 у разі помилки з установленим винятком.

Примітка

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

Витягти елементи даних початку, зупинки та кроку з об’єкта зрізу як цілі числа 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.

Повертає -1 у разі помилки, 0 у разі успіху.

Added in version 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.

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

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

Added in version 3.6.1.

Еліпсис

PyObject *Py_Ellipsis

The Python Ellipsis object. This object has no methods. Like Py_None, it is an immortal. singleton object.

Змінено в версії 3.12: Py_Ellipsis is immortal.