Tuple-Objekte¶
-
PyTypeObject PyTuple_Type¶
- Teil der Stable ABI.
Diese Instanz von
PyTypeObjectrepräsentiert den Python-Tuple-Typ; sie ist dasselbe Objekt wietuplein der Python-Schicht.
-
int PyTuple_Check(PyObject *p)¶
Gibt wahr zurück, wenn p ein Tuple-Objekt oder eine Instanz einer Unterklasse des Tuple-Typs ist. Diese Funktion ist immer erfolgreich.
-
int PyTuple_CheckExact(PyObject *p)¶
Gibt wahr zurück, wenn p ein Tuple-Objekt, aber keine Instanz einer Unterklasse des Tuple-Typs ist. Diese Funktion ist immer erfolgreich.
-
PyObject *PyTuple_New(Py_ssize_t len)¶
- Rückgabewert: Neue Referenz. Teil der Stabilen ABI.
Gibt ein neues Tuple-Objekt der Größe len zurück oder
NULLmit einer gesetzten Exception im Fehlerfall.
-
PyObject *PyTuple_Pack(Py_ssize_t n, ...)¶
- Rückgabewert: Neue Referenz. Teil der Stabilen ABI.
Gibt ein neues Tuple-Objekt der Größe n zurück oder
NULLmit einer gesetzten Exception im Fehlerfall. Die Tupelwerte werden mit den nachfolgenden n C-Argumenten initialisiert, die auf Python-Objekte zeigen.PyTuple_Pack(2, a, b)ist äquivalent zuPy_BuildValue("(OO)", a, b).
-
Py_ssize_t PyTuple_Size(PyObject *p)¶
- Teil der Stable ABI.
Nimmt einen Zeiger auf ein Tuple-Objekt und gibt die Größe dieses Tupels zurück. Im Fehlerfall wird
-1zurückgegeben und eine Exception gesetzt.
-
Py_ssize_t PyTuple_GET_SIZE(PyObject *p)¶
Wie
PyTuple_Size(), aber ohne Fehlerprüfung.
-
PyObject *PyTuple_GetItem(PyObject *p, Py_ssize_t pos)¶
- Rückgabewert: Ausgeliehene Referenz. Teil der Stable ABI.
Gibt das Objekt an der Position pos im durch p dargestellten Tupel zurück. Wenn pos negativ oder außerhalb der Grenzen liegt, wird
NULLzurückgegeben und eineIndexError-Exception gesetzt.Die zurückgegebene Referenz ist vom Tupel p entlehnt (d.h.: sie ist nur gültig, solange Sie eine Referenz auf p halten). Um eine starke Referenz zu erhalten, verwenden Sie
Py_NewRef(PyTuple_GetItem(...))oderPySequence_GetItem().
-
PyObject *PyTuple_GET_ITEM(PyObject *p, Py_ssize_t pos)¶
- Rückgabewert: Entliehene Referenz.
Wie
PyTuple_GetItem(), aber ohne Prüfung seiner Argumente.
-
PyObject *PyTuple_GetSlice(PyObject *p, Py_ssize_t low, Py_ssize_t high)¶
- Rückgabewert: Neue Referenz. Teil der Stabilen ABI.
Gibt den Slice des durch p dargestellten Tupels zwischen low und high zurück, oder
NULLmit einer gesetzten Exception im Fehlerfall.Dies ist das Äquivalent zum Python-Ausdruck
p[low:high]. Indizierung vom Ende des Tupels wird nicht unterstützt.
-
int PyTuple_SetItem(PyObject *p, Py_ssize_t pos, PyObject *o)¶
- Teil der Stable ABI.
Fügt eine Referenz auf das Objekt o an der Position pos des durch p dargestellten Tupels ein. Gibt bei Erfolg
0zurück. Wenn pos außerhalb der Grenzen liegt, wird-1zurückgegeben und eineIndexError-Exception gesetzt.Hinweis
Diese Funktion "stiehlt" eine Referenz auf o und verwirft eine Referenz auf ein bereits im Tupel an der betroffenen Position befindliches Element.
-
void PyTuple_SET_ITEM(PyObject *p, Py_ssize_t pos, PyObject *o)¶
Wie
PyTuple_SetItem(), aber ohne Fehlerprüfung und sollte *nur* zum Füllen brandneuer Tupel verwendet werden.Grenzenprüfung wird als Assertion durchgeführt, wenn Python im Debug-Modus oder mit
Assertionenkompiliert wurde.Hinweis
Diese Funktion "stiehlt" eine Referenz auf o und verwirft, im Gegensatz zu
PyTuple_SetItem(), keine Referenz auf ein ersetztes Element; jede Referenz im Tupel an Position pos wird geleakt.Warnung
Dieses Makro sollte *nur* auf neu erstellten Tupeln verwendet werden. Die Verwendung dieses Makros auf einem bereits verwendeten Tupel (oder anders ausgedrückt: mit einer Referenzanzahl > 1) kann zu undefiniertem Verhalten führen.
-
int _PyTuple_Resize(PyObject **p, Py_ssize_t newsize)¶
Kann verwendet werden, um ein Tupel zu vergrößern/verkleinern. newsize wird die neue Länge des Tupels sein. Da Tupel *unveränderlich* sein sollen, sollte dies nur verwendet werden, wenn es nur eine Referenz auf das Objekt gibt. Verwenden Sie dies *nicht*, wenn das Tupel möglicherweise bereits anderen Teilen des Codes bekannt ist. Das Tupel wird immer am Ende wachsen oder schrumpfen. Betrachten Sie dies als Zerstörung des alten Tupels und Erstellung eines neuen, nur effizienter. Gibt
0bei Erfolg zurück. Client-Code sollte niemals davon ausgehen, dass der resultierende Wert von*pderselbe ist wie vor dem Aufruf dieser Funktion. Wenn das von*preferenzierte Objekt ersetzt wird, wird das ursprüngliche*pzerstört. Im Fehlerfall gibt die Funktion-1zurück, setzt*paufNULLund löst eineMemoryErroroder eineSystemErroraus.
Struct-Sequenz-Objekte¶
Struct-Sequenz-Objekte sind das C-Äquivalent von namedtuple()-Objekten, d.h. einer Sequenz, deren Elemente auch über Attribute zugänglich sind. Um eine Struct-Sequenz zu erstellen, müssen Sie zuerst einen spezifischen Struct-Sequenz-Typ erstellen.
-
PyTypeObject *PyStructSequence_NewType(PyStructSequence_Desc *desc)¶
- Rückgabewert: Neue Referenz. Teil der Stabilen ABI.
Erstellt einen neuen Struct-Sequenz-Typ aus den Daten in desc, wie unten beschrieben. Instanzen des resultierenden Typs können mit
PyStructSequence_New()erstellt werden.Gibt
NULLmit einer gesetzten Exception im Fehlerfall zurück.
-
void PyStructSequence_InitType(PyTypeObject *type, PyStructSequence_Desc *desc)¶
Initialisiert einen Struct-Sequenz-Typ type im Speicher aus desc.
-
int PyStructSequence_InitType2(PyTypeObject *type, PyStructSequence_Desc *desc)¶
Wie
PyStructSequence_InitType(), gibt aber0bei Erfolg und-1mit einer gesetzten Exception im Fehlerfall zurück.Hinzugefügt in Version 3.4.
-
type PyStructSequence_Desc¶
- Teil der Stable ABI (einschließlich aller Member).
Enthält die Metainformationen für den zu erstellenden Struct-Sequenz-Typ.
-
const char *name¶
Vollqualifizierter Name des Typs; null-terminiert und UTF-8-kodiert. Der Name muss den Modulnamen enthalten.
-
const char *doc¶
Zeiger auf den Docstring für den Typ oder
NULLzum Auslassen.
-
PyStructSequence_Field *fields¶
Zeiger auf ein null-terminiertes Array von Feldnamen des neuen Typs.
-
int n_in_sequence¶
Anzahl der Felder, die von der Python-Seite sichtbar sind (wenn als Tupel verwendet).
-
const char *name¶
-
type PyStructSequence_Field¶
- Teil der Stable ABI (einschließlich aller Member).
Beschreibt ein Feld einer Struct-Sequenz. Da eine Struct-Sequenz als Tupel modelliert wird, sind alle Felder als PyObject* typisiert. Der Index im
fields-Array derPyStructSequence_Descbestimmt, welches Feld der Struct-Sequenz beschrieben wird.-
const char *name¶
Name für das Feld oder
NULLzum Beenden der Liste benannter Felder, aufPyStructSequence_UnnamedFieldgesetzt, um es unbenannt zu lassen.
-
const char *doc¶
Feld-Docstring oder
NULLzum Auslassen.
-
const char *name¶
-
const char *const PyStructSequence_UnnamedField¶
- Teil des Stable ABI seit Version 3.11.
Spezialwert für einen Feldnamen, um ihn unbenannt zu lassen.
Geändert in Version 3.9: Der Typ wurde von
char *geändert.
-
PyObject *PyStructSequence_New(PyTypeObject *type)¶
- Rückgabewert: Neue Referenz. Teil der Stabilen ABI.
Erstellt eine Instanz von type, die mit
PyStructSequence_NewType()erstellt worden sein muss.Gibt
NULLmit einer gesetzten Exception im Fehlerfall zurück.
-
PyObject *PyStructSequence_GetItem(PyObject *p, Py_ssize_t pos)¶
- Rückgabewert: Ausgeliehene Referenz. Teil der Stable ABI.
Gibt das Objekt an Position pos in der Struct-Sequenz, die durch p dargestellt wird, zurück.
Grenzenprüfung wird als Assertion durchgeführt, wenn Python im Debug-Modus oder mit
Assertionenkompiliert wurde.
-
PyObject *PyStructSequence_GET_ITEM(PyObject *p, Py_ssize_t pos)¶
- Rückgabewert: Entliehene Referenz.
Alias für
PyStructSequence_GetItem().Geändert in Version 3.13: Implementiert nun als Alias für
PyStructSequence_GetItem().
-
void PyStructSequence_SetItem(PyObject *p, Py_ssize_t pos, PyObject *o)¶
- Teil der Stable ABI.
Setzt das Feld am Index pos der Struct-Sequenz p auf den Wert o. Wie
PyTuple_SET_ITEM()sollte dies nur zum Füllen brandneuer Instanzen verwendet werden.Grenzenprüfung wird als Assertion durchgeführt, wenn Python im Debug-Modus oder mit
Assertionenkompiliert wurde.Hinweis
Diese Funktion "stiehlt" eine Referenz auf o.
-
void PyStructSequence_SET_ITEM(PyObject *p, Py_ssize_t *pos, PyObject *o)¶
Alias für
PyStructSequence_SetItem().Geändert in Version 3.13: Implementiert nun als Alias für
PyStructSequence_SetItem().