Протокол послідовності

int PySequence_Check(PyObject *o)

Return 1 if the object provides sequence protocol, and 0 otherwise. Note that it returns 1 for Python classes with a __getitem__() method unless they are dict subclasses since in general case it is impossible to determine what the type of keys it supports. This function always succeeds.

Py_ssize_t PySequence_Size(PyObject *o)
Py_ssize_t PySequence_Length(PyObject *o)

Повертає кількість об’єктів у послідовності o в разі успіху та -1 в разі невдачі. Це еквівалентно виразу Python len(o).

PyObject* PySequence_Concat(PyObject *o1, PyObject *o2)
Return value: New reference.

Повертає конкатенацію o1 і o2 у разі успіху та NULL у разі невдачі. Це еквівалент виразу Python o1 + o2.

PyObject* PySequence_Repeat(PyObject *o, Py_ssize_t count)
Return value: New reference.

Повертає результат повторення об’єкта послідовності o count разів або NULL у разі помилки. Це еквівалент виразу Python o * count.

PyObject* PySequence_InPlaceConcat(PyObject *o1, PyObject *o2)
Return value: New reference.

Повертає конкатенацію o1 і o2 у разі успіху та NULL у разі невдачі. Операція виконується на місці, якщо o1 її підтримує. Це еквівалент виразу Python o1 += o2.

PyObject* PySequence_InPlaceRepeat(PyObject *o, Py_ssize_t count)
Return value: New reference.

Повертає результат повторення об’єкта послідовності o count разів або NULL у разі помилки. Операція виконується на місці, якщо o її підтримує. Це еквівалент виразу Python o *= count.

PyObject* PySequence_GetItem(PyObject *o, Py_ssize_t i)
Return value: New reference.

Повертає i-й елемент o або NULL у разі помилки. Це еквівалент виразу Python o[i].

PyObject* PySequence_GetSlice(PyObject *o, Py_ssize_t i1, Py_ssize_t i2)
Return value: New reference.

Повертає зріз об’єкта послідовності o між i1 і i2 або NULL у разі помилки. Це еквівалент виразу Python o[i1:i2].

int PySequence_SetItem(PyObject *o, Py_ssize_t i, PyObject *v)

Призначте об’єкт v до iго елемента o. Викликати виняток і повертати -1 у разі помилки; повернути 0 в разі успіху. Це еквівалент оператора Python o[i] = v. Ця функція не викрадає посилання на v.

If v is NULL, the element is deleted, however this feature is deprecated in favour of using PySequence_DelItem().

int PySequence_DelItem(PyObject *o, Py_ssize_t i)

Видалити ith елемент об’єкта o. Повертає -1 у разі помилки. Це еквівалент оператора Python del o[i].

int PySequence_SetSlice(PyObject *o, Py_ssize_t i1, Py_ssize_t i2, PyObject *v)

Призначте об’єкт послідовності v фрагменту в об’єкті послідовності o від i1 до i2. Це еквівалент оператора Python o[i1:i2] = v.

int PySequence_DelSlice(PyObject *o, Py_ssize_t i1, Py_ssize_t i2)

Видалити фрагмент у послідовному об’єкті o від i1 до i2. Повертає -1 у разі помилки. Це еквівалент оператора Python del o[i1:i2].

Py_ssize_t PySequence_Count(PyObject *o, PyObject *value)

Повертає кількість входжень value у o, тобто повертає кількість ключів, для яких o[key] == value. У разі помилки поверніть -1. Це еквівалентно виразу Python o.count(value).

int PySequence_Contains(PyObject *o, PyObject *value)

Визначте, чи o містить value. Якщо елемент у o дорівнює value, поверніть 1, інакше поверніть 0. У разі помилки повертає -1. Це еквівалентно виразу Python значення в o.

Py_ssize_t PySequence_Index(PyObject *o, PyObject *value)

Повертає перший індекс i, для якого o[i] == значення. У разі помилки повертає -1. Це еквівалентно виразу Python o.index(value).

PyObject* PySequence_List(PyObject *o)
Return value: New reference.

Повертає об’єкт списку з тим же вмістом, що й послідовність або ітерація o, або NULL у разі помилки. Повернений список гарантовано буде новим. Це еквівалентно виразу Python list(o).

PyObject* PySequence_Tuple(PyObject *o)
Return value: New reference.

Повертає об’єкт кортежу з тим самим вмістом, що й послідовність або повторюваний o, або NULL у разі помилки. Якщо o є кортежем, буде повернуто нове посилання, інакше буде створено кортеж із відповідним вмістом. Це еквівалентно виразу Python tuple(o).

PyObject* PySequence_Fast(PyObject *o, const char *m)
Return value: New reference.

Повертає послідовність або ітерацію o як об’єкт, який можна використовувати іншою сім’єю функцій PySequence_Fast*. Якщо об’єкт не є послідовністю або ітерацією, викликає TypeError з m як текст повідомлення. Повертає NULL у разі помилки.

Функції PySequence_Fast* названо так, оскільки вони припускають, що o є PyTupleObject або PyListObject і мають прямий доступ до полів даних o.

Як деталь реалізації CPython, якщо o вже є послідовністю або списком, він буде повернутий.

Py_ssize_t PySequence_Fast_GET_SIZE(PyObject *o)

Returns the length of o, assuming that o was returned by PySequence_Fast() and that o is not NULL. The size can also be gotten by calling PySequence_Size() on o, but PySequence_Fast_GET_SIZE() is faster because it can assume o is a list or tuple.

PyObject* PySequence_Fast_GET_ITEM(PyObject *o, Py_ssize_t i)
Return value: Borrowed reference.

Повертає i-й елемент o, припускаючи, що o було повернуто PySequence_Fast(), o не є NULL і що i знаходиться в межах.

PyObject** PySequence_Fast_ITEMS(PyObject *o)

Повертає базовий масив покажчиків PyObject. Припускає, що o було повернуто PySequence_Fast() і o не є NULL.

Зверніть увагу: якщо розмір списку змінено, перерозподіл може перемістити масив елементів. Отже, використовуйте покажчик базового масиву лише в контекстах, де послідовність не може змінитися.

PyObject* PySequence_ITEM(PyObject *o, Py_ssize_t i)
Return value: New reference.

Повертає i-й елемент o або NULL у разі помилки. Швидша форма PySequence_GetItem(), але без перевірки того, що PySequence_Check() на o є істинним, і без коригування негативних індексів.