Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich lokale Variablen in Python dynamisch zuweisen?
Dynamische Variablenzuweisung in Python
In Python ist das dynamische Festlegen lokaler Variablen durch direktes Ändern des locals()-Wörterbuchs keine praktikable Lösung. Entgegen der landläufigen Meinung bleiben solche Änderungen nicht im Funktionsumfang bestehen.
Alternative Ansätze
Um lokale Variablen dynamisch festzulegen, sollten Sie eine der folgenden Methoden in Betracht ziehen:
Wörterbuch
Erstellen Sie ein Wörterbuch und weisen Sie es zu Schlüssel-Wert-Paare dynamisch:
d = {} d['xyz'] = 42
Objektattribut
Ein Objekt verwenden und Attribute dynamisch festlegen:
class C: pass obj = C() setattr(obj, 'xyz', 42)
Bearbeiten
Zugriff auf Variablen in Nicht-Funktions-Namespaces (Module, Klassendefinitionen, Instanzen) In der Regel werden Wörterbuchsuchen durchgeführt. Funktionslokale werden jedoch auf Geschwindigkeit optimiert, indem die dem Compiler bekannten Variablennamen vorkompiliert werden.
In der C-Implementierung von Python wird durch den Aufruf von locals() innerhalb einer Funktion ein Wörterbuch erstellt, das mit aktuellen lokalen Variablenwerten initialisiert wird. Dieses Wörterbuch wird mit Änderungen an lokalen Variablen aktualisiert und bei nachfolgenden Aufrufen von locals() zurückgegeben.
In IronPython verwenden Funktionen, die locals() aufrufen, ein Wörterbuch als Speicher für ihre lokalen Variablen. Zuweisungen an lokale Variablen verändern das Wörterbuch und umgekehrt. Das Binden eines anderen Namens an die lokale Funktion in IronPython ermöglicht jedoch den Zugriff auf die lokalen Variablen des Bindungsbereichs, nicht auf die der Funktion.
Achtung
Es ist wichtig zu beachten dass die Zuweisung zum von locals() zurückgegebenen Wörterbuch zu unvorhersehbaren Ergebnissen führen kann. Es wird dringend davon abgeraten, sich auf diese Aufgaben zu verlassen.
Das obige ist der detaillierte Inhalt vonWie kann ich lokale Variablen in Python dynamisch zuweisen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!