Объекты для нарезки¶
-
PyTypeObject PySlice_Type¶
- Часть Стабильный ABI.
Объект типа для объектов среза. Это то же самое, что
slice
в слое Python.
-
int PySlice_Check(PyObject *ob)¶
Возвращает true, если ob является объектом среза; ob не должен быть
NULL
. Эта функция всегда успешна.
-
PyObject *PySlice_New(PyObject *start, PyObject *stop, PyObject *step)¶
- Возвращаемое значение: Новая ссылка. Часть Стабильный ABI.
Возвращает новый объект slice с заданными значениями. Параметры start, stop и step используются в качестве значений одноименных атрибутов объекта slice. Любое из значений может быть
NULL
, в этом случае для соответствующего атрибута будет использоватьсяNone
. ВернитеNULL
, если новый объект не удалось выделить.
-
int PySlice_GetIndices(PyObject *slice, Py_ssize_t length, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step)¶
- Часть Стабильный ABI.
Получает индексы начала, остановки и шага из объекта среза slice, предполагая последовательность длиной length. Индексы, превышающие length, рассматриваются как ошибки.
Возвращает
0
при успехе и-1
при ошибке без набора исключений (если только один из индексов не былNone
и его не удалось преобразовать в целое число, в этом случае возвращается-1
с набором исключений).Скорее всего, вы не захотите использовать эту функцию.
Изменено в версии 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)¶
- Часть Стабильный 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)¶
- Часть Стабильный ABI с версии 3.7.
Извлеките члены данных start, stop и step из объекта slice в виде целых чисел C. Молча уменьшите значения больше
PY_SSIZE_T_MAX
доPY_SSIZE_T_MAX
, молча увеличьте значения start и stop меньшеPY_SSIZE_T_MIN
доPY_SSIZE_T_MIN
и молча увеличьте значения step меньше-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)¶
- Часть Стабильный ABI с версии 3.7.
Настраивает индексы начального и конечного срезов, предполагая последовательность заданной длины. Выходящие за пределы индексы обрезаются так же, как и при работе с обычными срезами.
Возвращает длину фрагмента. Всегда успешно. Не вызывает код Python.
Added in version 3.6.1.
Объект эллипсиса¶
-
PyObject *Py_Ellipsis¶
Объект Python
Ellipsis
. У этого объекта нет методов. Как иPy_None
, он является объектом immortal singleton.Изменено в версии 3.12:
Py_Ellipsis
бессмертен.