Heim > Backend-Entwicklung > Python-Tutorial > Wie kann ich lokale Variablen innerhalb der „exec'-Funktion von Python aktualisieren?

Wie kann ich lokale Variablen innerhalb der „exec'-Funktion von Python aktualisieren?

Barbara Streisand
Freigeben: 2024-12-06 01:58:10
Original
683 Leute haben es durchsucht

How Can I Update Local Variables Within Python's `exec` Function?

Ü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()
Nach dem Login kopieren

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)
Nach dem Login kopieren

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:

  • Python 3 optimiert den lokalen Variablenspeicher und beeinflusst das Verhalten von exec .
  • Das standardmäßige lokale Wörterbuch für exec kann in Python nicht geändert werden 3.
  • Die Verwendung eines expliziten lokalen Wörterbuchs ermöglicht lokale Variablenaktualisierungen innerhalb von Exec-Aufrufen.

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage