Protocolo de sequência

int PySequence_Check(PyObject *o)
Part of the Stable ABI.

Return 1 if the object provides the 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 it is impossible to determine what type of keys the class supports. This function always succeeds.

Py_ssize_t PySequence_Size(PyObject *o)
Py_ssize_t PySequence_Length(PyObject *o)
Part of the Stable ABI.

Retorna o número de objetos na sequência o em caso de sucesso, ou -1 em caso de falha. Equivale à expressão Python len(o).

PyObject *PySequence_Concat(PyObject *o1, PyObject *o2)
Retorna valor: Nova referência. Part of the Stable ABI.

Retorna a concatenação de o1 e o2 em caso de sucesso, e NULL em caso de falha. Equivale à expressão Python o1 + o2.

PyObject *PySequence_Repeat(PyObject *o, Py_ssize_t count)
Retorna valor: Nova referência. Part of the Stable ABI.

Retorna o resultado da repetição do objeto sequência o count vezes ou NULL em caso de falha. Equivale à expressão Python o * count.

PyObject *PySequence_InPlaceConcat(PyObject *o1, PyObject *o2)
Retorna valor: Nova referência. Part of the Stable ABI.

Retorna a concatenação de o1 e o2 em caso de sucesso, e NULL em caso de falha. A operação é feita localmente se o1 permitir. Equivale à expressão Python o1 += o2.

PyObject *PySequence_InPlaceRepeat(PyObject *o, Py_ssize_t count)
Retorna valor: Nova referência. Part of the Stable ABI.

Retorna o resultado da repetição do objeto sequência o count vezes ou NULL em caso de falha. A operação é feita localmente se o permitir. Equivale à expressão Python o *= count.

PyObject *PySequence_GetItem(PyObject *o, Py_ssize_t i)
Retorna valor: Nova referência. Part of the Stable ABI.

Retorna o elemento i de o ou NULL em caso de falha. Equivale à expressão Python o[i].

PyObject *PySequence_GetSlice(PyObject *o, Py_ssize_t i1, Py_ssize_t i2)
Retorna valor: Nova referência. Part of the Stable ABI.

Retorna a fatia do objeto sequência o entre i1 e i2, ou NULL em caso de falha. Equivale à expressão Python o[i1:i2].

int PySequence_SetItem(PyObject *o, Py_ssize_t i, PyObject *v)
Part of the Stable ABI.

Atribui o objeto v ao elemento i de o. Levanta uma exceção e retorna -1 em caso de falha; retorna 0 em caso de sucesso. Esta função não rouba uma referência a v. Equivale à instrução Python o[i]=v.

Se v for NULL, o elemento será removido, mas este recurso foi descontinuado em favor do uso de PySequence_DelItem().

int PySequence_DelItem(PyObject *o, Py_ssize_t i)
Part of the Stable ABI.

Exclui o elemento i do objeto o. Retorna -1 em caso de falha. Equivale à instrução Python del o[i].

int PySequence_SetSlice(PyObject *o, Py_ssize_t i1, Py_ssize_t i2, PyObject *v)
Part of the Stable ABI.

Atribui o objeto sequência v à fatia no objeto sequência o de i1 a i2. Equivale à instrução Python o[i1:i2] = v.

int PySequence_DelSlice(PyObject *o, Py_ssize_t i1, Py_ssize_t i2)
Part of the Stable ABI.

Exclui a fatia no objeto sequência o de i1 a i2. Retorna -1 em caso de falha. Equivale à instrução Python del o[i1:i2].

Py_ssize_t PySequence_Count(PyObject *o, PyObject *value)
Part of the Stable ABI.

Retorna a quantidade de ocorrências de value em o, isto é, retorna a quantidade de chaves onde o[key] == value. Em caso de falha, retorna -1. Equivale à expressão Python o.count(value).

int PySequence_Contains(PyObject *o, PyObject *value)
Part of the Stable ABI.

Determina se o contém value. Se um item em o for igual a value, retorna 1, senão, retorna 0. Em caso de erro, retorna -1. Equivale à expressão Python value in o.

Py_ssize_t PySequence_Index(PyObject *o, PyObject *value)
Part of the Stable ABI.

Retorna o primeiro índice i tal que o[i] == value. Em caso de erro, retorna -1. Equivale à expressão Python o.index(value).

PyObject *PySequence_List(PyObject *o)
Retorna valor: Nova referência. Part of the Stable ABI.

Retorna um objeto lista com o mesmo conteúdo da sequência ou iterável o, ou NULL em caso de falha. Garante-se que a lista retornada será nova. Equivale à expressão Python list(o).

PyObject *PySequence_Tuple(PyObject *o)
Retorna valor: Nova referência. Part of the Stable ABI.

Retorna o objeto tupla com o mesmo conteúdo da sequência ou iterável o, ou NULL em caso de falha. Se o for uma tupla, retorna uma nova referência. Senão, uma tupla será construída com o conteúdo apropriado. Equivale à expressão Python tuple(o).

PyObject *PySequence_Fast(PyObject *o, const char *m)
Retorna valor: Nova referência. Part of the Stable ABI.

Retorna a sequência ou iterável o como um objeto usável por outras funções da família PySequence_Fast*. Se o objeto não for uma sequência ou iterável, levanta TypeError com m sendo o texto da mensagem. Retorna NULL em caso de falha.

As funções PySequence_Fast* têm esse nome porque presumem que o é um PyTupleObject ou um PyListObject e porque acessam os campos de dados de o diretamente.

Como detalhe de implementação de CPython, se o já for uma sequência ou lista, ele será retornado.

Py_ssize_t PySequence_Fast_GET_SIZE(PyObject *o)

Retorna o comprimento de o, presumindo que o foi retornado por PySequence_Fast() e que o não seja NULL. O tamanho também pode ser obtido ao chamar PySequence_Size() em o, mas PySequence_Fast_GET_SIZE() é mais rápida, ao supor que o é uma lista ou tupla.

PyObject *PySequence_Fast_GET_ITEM(PyObject *o, Py_ssize_t i)
Retorna valor: Referência emprestada.

Retorna o elemento i de o, presumindo que o foi retornado por PySequence_Fast(), que o seja NULL, e que i esteja nos limites.

PyObject **PySequence_Fast_ITEMS(PyObject *o)

Retorna o vetor subjacente de ponteiros PyObject. Presume que o foi retornado por PySequence_Fast() e que o não seja NULL.

Note que, se uma lista for redimensionada, a realocação poderá reposicionar o vetor de itens. Portanto, só use o ponteiro de vetor subjacente em contextos onde a sequência não mudará.

PyObject *PySequence_ITEM(PyObject *o, Py_ssize_t i)
Retorna valor: Nova referência.

Retorna o elemento i de o, ou NULL em caso de falha. É uma forma mais rápida de PySequence_GetItem(), mas sem verificar se PySequence_Check() em o é verdadeiro e sem ajustar índices negativos.