Kontextvariablenobjekte¶
Hinzugefügt in Version 3.7.
Geändert in Version 3.7.1
Hinweis
In Python 3.7.1 wurden die Signaturen aller Kontextvariablen-C-APIs geändert, um PyObject-Zeiger anstelle von PyContext, PyContextVar und PyContextToken zu verwenden, z.B.
// in 3.7.0:
PyContext *PyContext_New(void);
// in 3.7.1+:
PyObject *PyContext_New(void);
Weitere Details finden Sie unter bpo-34762.
Dieser Abschnitt beschreibt die öffentliche C-API für das Modul contextvars.
-
type PyContext¶
Die C-Struktur, die zur Darstellung eines
contextvars.Context-Objekts verwendet wird.
-
type PyContextVar¶
Die C-Struktur, die zur Darstellung eines
contextvars.ContextVar-Objekts verwendet wird.
-
type PyContextToken¶
Die C-Struktur, die zur Darstellung eines
contextvars.Token-Objekts verwendet wird.
-
PyTypeObject PyContext_Type¶
Das Typobjekt, das den Kontext-Typ repräsentiert.
-
PyTypeObject PyContextVar_Type¶
Das Typobjekt, das den Kontextvariablen-Typ repräsentiert.
-
PyTypeObject PyContextToken_Type¶
Das Typobjekt, das den Kontextvariablen-Token-Typ repräsentiert.
Typüberprüfungs-Makros
-
int PyContext_CheckExact(PyObject *o)¶
Gibt `true` zurück, wenn o vom Typ
PyContext_Typeist. o darf nichtNULLsein. Diese Funktion schlägt nie fehl.
-
int PyContextVar_CheckExact(PyObject *o)¶
Gibt `true` zurück, wenn o vom Typ
PyContextVar_Typeist. o darf nichtNULLsein. Diese Funktion schlägt nie fehl.
-
int PyContextToken_CheckExact(PyObject *o)¶
Gibt `true` zurück, wenn o vom Typ
PyContextToken_Typeist. o darf nichtNULLsein. Diese Funktion schlägt nie fehl.
Funktionen zur Verwaltung von Kontextobjekten
-
PyObject *PyContext_New(void)¶
- Rückgabewert: Neue Referenz.
Erstellt ein neues, leeres Kontextobjekt. Gibt
NULLzurück, wenn ein Fehler aufgetreten ist.
-
PyObject *PyContext_Copy(PyObject *ctx)¶
- Rückgabewert: Neue Referenz.
Erstellt eine flache Kopie des übergebenen Kontextobjekts ctx. Gibt
NULLzurück, wenn ein Fehler aufgetreten ist.
-
PyObject *PyContext_CopyCurrent(void)¶
- Rückgabewert: Neue Referenz.
Erstellt eine flache Kopie des aktuellen Thread-Kontexts. Gibt
NULLzurück, wenn ein Fehler aufgetreten ist.
-
int PyContext_Enter(PyObject *ctx)¶
Setzt ctx als aktuellen Kontext für den aktuellen Thread. Gibt
0bei Erfolg und-1bei einem Fehler zurück.
-
int PyContext_Exit(PyObject *ctx)¶
Deaktiviert den Kontext ctx und stellt den vorherigen Kontext als aktuellen Kontext für den aktuellen Thread wieder her. Gibt
0bei Erfolg und-1bei einem Fehler zurück.
-
int PyContext_AddWatcher(PyContext_WatchCallback callback)¶
Registriert callback als Beobachter für Kontextobjekte für den aktuellen Interpreter. Gibt eine ID zurück, die an
PyContext_ClearWatcher()übergeben werden kann. Im Fehlerfall (z. B. keine verfügbaren Beobachter-IDs mehr) wird-1zurückgegeben und eine Ausnahme gesetzt.Hinzugefügt in Version 3.14.
-
int PyContext_ClearWatcher(int watcher_id)¶
Löscht den durch watcher_id identifizierten Beobachter, der zuvor von
PyContext_AddWatcher()für den aktuellen Interpreter zurückgegeben wurde. Gibt0bei Erfolg oder-1und setzt eine Ausnahme bei einem Fehler zurück (z. B. wenn die angegebene watcher_id nie registriert wurde).Hinzugefügt in Version 3.14.
-
type PyContextEvent¶
Aufzählung möglicher Ereignisse für Beobachter von Kontextobjekten
Py_CONTEXT_SWITCHED: Der aktuelle Kontext wurde zu einem anderen Kontext gewechselt. Das an die Beobachter-Callback-Funktion übergebene Objekt ist das nun aktuellecontextvars.Context-Objekt oder None, wenn kein Kontext aktuell ist.
Hinzugefügt in Version 3.14.
-
typedef int (*PyContext_WatchCallback)(PyContextEvent event, PyObject *obj)¶
Callback-Funktion für Beobachter von Kontextobjekten. Das an die Callback-Funktion übergebene Objekt ist ereignisspezifisch; siehe
PyContextEventfür Details.Wenn die Callback-Funktion mit einer gesetzten Ausnahme zurückkehrt, muss sie
-1zurückgeben; diese Ausnahme wird als nicht abfangbare Ausnahme mitPyErr_FormatUnraisable()ausgegeben. Andernfalls sollte sie0zurückgeben.Es kann bereits eine ausstehende Ausnahme beim Eintritt in den Callback gesetzt sein. In diesem Fall sollte der Callback
0zurückgeben, wobei die Ausnahme weiterhin gesetzt ist. Das bedeutet, der Callback darf keine andere API aufrufen, die eine Ausnahme setzen kann, es sei denn, er speichert und löscht zuerst den Ausnahmezustand und stellt ihn vor der Rückgabe wieder her.Hinzugefügt in Version 3.14.
Kontextvariablen-Funktionen
-
PyObject *PyContextVar_New(const char *name, PyObject *def)¶
- Rückgabewert: Neue Referenz.
Erstellt ein neues
ContextVar-Objekt. Der Parameter name wird für Introspektion und Debugging verwendet. Der Parameter def gibt einen Standardwert für die Kontextvariable an oderNULL, wenn kein Standardwert vorhanden ist. Wenn ein Fehler aufgetreten ist, gibt diese FunktionNULLzurück.
-
int PyContextVar_Get(PyObject *var, PyObject *default_value, PyObject **value)¶
Ruft den Wert einer Kontextvariable ab. Gibt
-1zurück, wenn während der Suche ein Fehler aufgetreten ist, und0, wenn kein Fehler aufgetreten ist, unabhängig davon, ob ein Wert gefunden wurde.Wenn die Kontextvariable gefunden wurde, ist value ein Zeiger darauf. Wenn die Kontextvariable nicht gefunden wurde, zeigt value auf
default_value, wenn nicht
NULL;den Standardwert von var, wenn nicht
NULL;NULL
Mit Ausnahme von
NULLgibt die Funktion eine neue Referenz zurück.
-
PyObject *PyContextVar_Set(PyObject *var, PyObject *value)¶
- Rückgabewert: Neue Referenz.
Setzt den Wert von var auf value im aktuellen Kontext. Gibt ein neues Token-Objekt für diese Änderung zurück oder
NULL, wenn ein Fehler aufgetreten ist.
-
int PyContextVar_Reset(PyObject *var, PyObject *token)¶
Setzt den Zustand der Kontextvariable var auf den Zustand zurück, den sie vor dem Aufruf von
PyContextVar_Set()hatte, der das token zurückgegeben hat. Diese Funktion gibt0bei Erfolg und-1bei einem Fehler zurück.