Slice Objects

PyTypeObject PySlice_Type
Teil der Stable ABI.

Der Typobjekt für Slice-Objekte. Dies ist dasselbe wie slice in der Python-Ebene.

int PySlice_Check(PyObject *ob)

Gibt wahr zurück, wenn ob ein Slice-Objekt ist; ob darf nicht NULL sein. Diese Funktion ist immer erfolgreich.

PyObject *PySlice_New(PyObject *start, PyObject *stop, PyObject *step)
Rückgabewert: Neue Referenz. Teil der Stabilen ABI.

Gibt ein neues Slice-Objekt mit den gegebenen Werten zurück. Die Parameter start, stop und step werden als Werte der gleichnamigen Attribute des Slice-Objekts verwendet. Jeder der Werte kann NULL sein, in diesem Fall wird None für das entsprechende Attribut verwendet.

Gibt NULL zurück und setzt eine Exception, wenn das neue Objekt nicht alloziert werden konnte.

int PySlice_GetIndices(PyObject *slice, Py_ssize_t length, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step)
Teil der Stable ABI.

Ruft die Start-, Stop- und Step-Indizes aus dem Slice-Objekt slice ab, unter Annahme einer Sequenz der Länge length. Behandelt Indizes, die größer als length sind, als Fehler.

Gibt 0 bei Erfolg und -1 bei einem Fehler ohne gesetzte Exception zurück (es sei denn, einer der Indizes war nicht None und konnte nicht in einen Integer konvertiert werden, in diesem Fall wird -1 mit einer gesetzten Exception zurückgegeben).

Sie möchten diese Funktion wahrscheinlich nicht verwenden.

Geändert in Version 3.2: Der Parametertyp für den slice-Parameter war zuvor 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)
Teil der Stable ABI.

Verwendbare Ersetzung für PySlice_GetIndices(). Ruft die Start-, Stop- und Step-Indizes aus dem Slice-Objekt slice ab, unter Annahme einer Sequenz der Länge length, und speichert die Länge des Slices in slicelength. Außerhalb der Grenzen liegende Indizes werden so zugeschnitten, dass sie dem Verhalten normaler Slices entsprechen.

Gibt 0 bei Erfolg und -1 bei einem Fehler mit einer gesetzten Exception zurück.

Hinweis

Diese Funktion gilt als nicht sicher für resizable Sequenzen. Ihre Verwendung sollte durch eine Kombination aus PySlice_Unpack() und PySlice_AdjustIndices() ersetzt werden, wobei

if (PySlice_GetIndicesEx(slice, length, &start, &stop, &step, &slicelength) < 0) {
    // return error
}

ersetzt wird durch

if (PySlice_Unpack(slice, &start, &stop, &step) < 0) {
    // return error
}
slicelength = PySlice_AdjustIndices(length, &start, &stop, step);

Geändert in Version 3.2: Der Parametertyp für den slice-Parameter war zuvor PySliceObject*.

Geändert in Version 3.6.1: Wenn Py_LIMITED_API nicht gesetzt ist oder auf einen Wert zwischen 0x03050400 und 0x03060000 (nicht einschließlich) oder 0x03060100 oder höher gesetzt ist, ist PySlice_GetIndicesEx() als Makro implementiert, das PySlice_Unpack() und PySlice_AdjustIndices() verwendet. Die Argumente start, stop und step werden mehrfach ausgewertet.

Veraltet seit Version 3.6.1: Wenn Py_LIMITED_API auf einen Wert kleiner als 0x03050400 oder zwischen 0x03060000 und 0x03060100 (nicht einschließlich) gesetzt ist, ist PySlice_GetIndicesEx() eine veraltete Funktion.

int PySlice_Unpack(PyObject *slice, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step)
Teil der Stable ABI seit Version 3.7.

Extrahiert die Start-, Stop- und Step-Datenmitglieder aus einem Slice-Objekt als C-Integers. Werte größer als PY_SSIZE_T_MAX werden stillschweigend auf PY_SSIZE_T_MAX reduziert, Start- und Stop-Werte kleiner als PY_SSIZE_T_MIN werden stillschweigend auf PY_SSIZE_T_MIN gesetzt, und Step-Werte kleiner als -PY_SSIZE_T_MAX werden stillschweigend auf -PY_SSIZE_T_MAX gesetzt.

Gibt -1 mit einer gesetzten Exception bei einem Fehler zurück, 0 bei Erfolg.

Hinzugefügt 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)
Teil der Stable ABI seit Version 3.7.

Passt Start-/End-Slice-Indizes unter Annahme einer Sequenz der angegebenen Länge an. Außerhalb der Grenzen liegende Indizes werden so zugeschnitten, dass sie dem Verhalten normaler Slices entsprechen.

Gibt die Länge des Slices zurück. Immer erfolgreich. Ruft keinen Python-Code auf.

Hinzugefügt in Version 3.6.1.

Ellipsis Object

PyTypeObject PyEllipsis_Type
Teil der Stable ABI.

Der Typ des Python Ellipsis-Objekts. Dasselbe wie types.EllipsisType in der Python-Ebene.

PyObject *Py_Ellipsis

Das Python Ellipsis-Objekt. Dieses Objekt hat keine Methoden. Ähnlich wie Py_None ist es ein unsterbliches Singleton-Objekt.

Geändert in Version 3.12: Py_Ellipsis ist unsterblich.