Überwindung von Einschränkungen bei der Variablenaktualisierung mit Python Exec
In Python ermöglicht die Exec-Funktion die dynamische Ausführung von Python-Code zur Laufzeit. Bei Verwendung mit lokalen Variablen kann es jedoch zu unerwartetem Verhalten kommen.
Das Problem:
Bedenken Sie den folgenden Code:
def f(): a = 1 exec("a = 3") print(a) f()
In Python 2 würde dieser Code 3 ausgeben, was darauf hinweist, dass die lokale Variable a innerhalb des exec-Aufrufs aktualisiert wurde. In Python 3 wird jedoch 1 ausgegeben, was die Frage aufwirft, wie lokale Variablen während Exec-Aufrufen aktualisiert werden.
Die Lösung:
Um dieses Problem zu beheben, Sie müssen explizit ein Locals-Wörterbuch an die Exec-Funktion übergeben:
def foo(): ldict = {} exec("a = 3", globals(), ldict) a = ldict['a'] print(a)
Durch die Verwendung von locals() erstellen Sie einen neuen lokalen Variablen-Namespace für exec-Aufruf. Änderungen an diesem Namespace werden im lokalen Bereich der foo-Funktion widergespiegelt.
Wichtige Punkte:
Das obige ist der detaillierte Inhalt vonWie kann ich lokale Variablen innerhalb der „exec'-Funktion von Python aktualisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!