Об’єкти фрагментів¶
-
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 theNone
will be used for the corresponding attribute. ReturnNULL
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 notNone
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.