Objeto tupla

type PyTupleObject

Este subtipo de PyObject representa um objeto tupla em Python.

PyTypeObject PyTuple_Type
Parte da ABI Estável.

Esta instância de PyTypeObject representa o tipo tupla de Python; é o mesmo objeto que tuple na camada Python.

int PyTuple_Check(PyObject *p)

Retorna verdadeiro se p é um objeto tupla ou uma instância de um subtipo do tipo tupla. Esta função sempre tem sucesso.

int PyTuple_CheckExact(PyObject *p)

Retorna verdadeiro se p é um objeto tupla, mas não uma instância de um subtipo do tipo tupla. Esta função sempre tem sucesso.

PyObject *PyTuple_New(Py_ssize_t len)
Retorna valor: Nova referência. Parte da ABI Estável.

Return a new tuple object of size len, or NULL with an exception set on failure.

PyObject *PyTuple_Pack(Py_ssize_t n, ...)
Retorna valor: Nova referência. Parte da ABI Estável.

Return a new tuple object of size n, or NULL with an exception set on failure. The tuple values are initialized to the subsequent n C arguments pointing to Python objects. PyTuple_Pack(2, a, b) is equivalent to Py_BuildValue("(OO)", a, b).

Py_ssize_t PyTuple_Size(PyObject *p)
Parte da ABI Estável.

Take a pointer to a tuple object, and return the size of that tuple. On error, return -1 and with an exception set.

Py_ssize_t PyTuple_GET_SIZE(PyObject *p)

Like PyTuple_Size(), but without error checking.

PyObject *PyTuple_GetItem(PyObject *p, Py_ssize_t pos)
Retorna valor: Referência emprestada. Parte da ABI Estável.

Retorna o objeto na posição pos na tupla apontada por p. Se pos estiver fora dos limites, retorna NULL e define uma exceção IndexError.

The returned reference is borrowed from the tuple p (that is: it is only valid as long as you hold a reference to p). To get a strong reference, use Py_NewRef(PyTuple_GetItem(...)) or PySequence_GetItem().

PyObject *PyTuple_GET_ITEM(PyObject *p, Py_ssize_t pos)
Retorna valor: Referência emprestada.

Como PyTuple_GetItem(), mas faz nenhuma verificação de seus argumentos.

PyObject *PyTuple_GetSlice(PyObject *p, Py_ssize_t low, Py_ssize_t high)
Retorna valor: Nova referência. Parte da ABI Estável.

Return the slice of the tuple pointed to by p between low and high, or NULL with an exception set on failure.

This is the equivalent of the Python expression p[low:high]. Indexing from the end of the tuple is not supported.

int PyTuple_SetItem(PyObject *p, Py_ssize_t pos, PyObject *o)
Parte da ABI Estável.

Insere uma referência ao objeto o na posição pos da tupla apontada por p. Retorna 0 em caso de sucesso. Se pos estiver fora dos limites, retorne -1 e define uma exceção IndexError.

Nota

Esta função “rouba” uma referência a o e descarta uma referência a um item já na tupla na posição afetada.

void PyTuple_SET_ITEM(PyObject *p, Py_ssize_t pos, PyObject *o)

Como PyTuple_SetItem(), mas não verifica erros e deve apenas ser usado para preencher novas tuplas.

A verificação de limites é realizada como uma asserção se o Python for construído em modo de depuração ou com asserções.

Nota

Esta função “rouba” uma referência para o e, ao contrário de PyTuple_SetItem(), não descarta uma referência para nenhum item que esteja sendo substituído; qualquer referência na tupla na posição pos será perdida.

Aviso

This macro should only be used on tuples that are newly created. Using this macro on a tuple that is already in use (or in other words, has a refcount > 1) could lead to undefined behavior.

int _PyTuple_Resize(PyObject **p, Py_ssize_t newsize)

Pode ser usado para redimensionar uma tupla. newsize será o novo comprimento da tupla. Como as tuplas são supostamente imutáveis, isso só deve ser usado se houver apenas uma referência ao objeto. Não use isto se a tupla já for conhecida por alguma outra parte do código. A tupla sempre aumentará ou diminuirá no final. Pense nisso como destruir a tupla antiga e criar uma nova, mas com mais eficiência. Retorna 0 em caso de sucesso. O código do cliente nunca deve presumir que o valor resultante de *p será o mesmo de antes de chamar esta função. Se o objeto referenciado por *p for substituído, o *p original será destruído. Em caso de falha, retorna -1 e define *p para NULL, e levanta MemoryError ou SystemError.

Objetos sequência de estrutura

Objetos sequência de estrutura são o equivalente em C dos objetos namedtuple(), ou seja, uma sequência cujos itens também podem ser acessados por meio de atributos. Para criar uma sequência de estrutura, você primeiro precisa criar um tipo de sequência de estrutura específico.

PyTypeObject *PyStructSequence_NewType(PyStructSequence_Desc *desc)
Retorna valor: Nova referência. Parte da ABI Estável.

Cria um novo tipo de sequência de estrutura a partir dos dados em desc, descrito abaixo. Instâncias do tipo resultante podem ser criadas com PyStructSequence_New().

Return NULL with an exception set on failure.

void PyStructSequence_InitType(PyTypeObject *type, PyStructSequence_Desc *desc)

Inicializa um tipo de sequência de estrutura type de desc no lugar.

int PyStructSequence_InitType2(PyTypeObject *type, PyStructSequence_Desc *desc)

Like PyStructSequence_InitType(), but returns 0 on success and -1 with an exception set on failure.

Adicionado na versão 3.4.

type PyStructSequence_Desc
Parte da ABI Estável (incluindo todos os membros).

Contém as metainformações de um tipo de sequência de estrutura a ser criado.

const char *name

Fully qualified name of the type; null-terminated UTF-8 encoded. The name must contain the module name.

const char *doc

Pointer to docstring for the type or NULL to omit.

PyStructSequence_Field *fields

Pointer to NULL-terminated array with field names of the new type.

int n_in_sequence

Number of fields visible to the Python side (if used as tuple).

type PyStructSequence_Field
Parte da ABI Estável (incluindo todos os membros).

Describes a field of a struct sequence. As a struct sequence is modeled as a tuple, all fields are typed as PyObject*. The index in the fields array of the PyStructSequence_Desc determines which field of the struct sequence is described.

const char *name

Name for the field or NULL to end the list of named fields, set to PyStructSequence_UnnamedField to leave unnamed.

const char *doc

Field docstring or NULL to omit.

const char *const PyStructSequence_UnnamedField
Parte da ABI Estável desde a versão 3.11.

Valor especial para um nome de campo para deixá-lo sem nome.

Alterado na versão 3.9: O tipo foi alterado de char *.

PyObject *PyStructSequence_New(PyTypeObject *type)
Retorna valor: Nova referência. Parte da ABI Estável.

Cria um instância de type, que deve ser criada com PyStructSequence_NewType().

Return NULL with an exception set on failure.

PyObject *PyStructSequence_GetItem(PyObject *p, Py_ssize_t pos)
Retorna valor: Referência emprestada. Parte da ABI Estável.

Return the object at position pos in the struct sequence pointed to by p.

A verificação de limites é realizada como uma asserção se o Python for construído em modo de depuração ou com asserções.

PyObject *PyStructSequence_GET_ITEM(PyObject *p, Py_ssize_t pos)
Retorna valor: Referência emprestada.

Alias to PyStructSequence_GetItem().

Alterado na versão 3.13: Now implemented as an alias to PyStructSequence_GetItem().

void PyStructSequence_SetItem(PyObject *p, Py_ssize_t pos, PyObject *o)
Parte da ABI Estável.

Define o campo no índice pos da sequência de estrutura p para o valor o. Como PyTuple_SET_ITEM(), isto só deve ser usado para preencher novas instâncias.

A verificação de limites é realizada como uma asserção se o Python for construído em modo de depuração ou com asserções.

Nota

Esta função “rouba” uma referência a o.

void PyStructSequence_SET_ITEM(PyObject *p, Py_ssize_t *pos, PyObject *o)

Alias to PyStructSequence_SetItem().

Alterado na versão 3.13: Now implemented as an alias to PyStructSequence_SetItem().