Heim > Artikel > Backend-Entwicklung > Wie unterscheidet sich das Verhalten der Funktion „exec“ in Python 2 und Python 3?
Verhalten der exec-Funktion in Python 2 vs. Python 3
In Python 2 und Python 3 weist die exec-Funktion bemerkenswerte Unterschiede im Verhalten auf .
Grund dafür Unterschied
In Python 2 war exec eine Anweisung, die lokale Bereichsoptimierungen explizit deaktivierte und den Zugriff auf Variablen sowohl im lokalen als auch im globalen Bereich ermöglichte. Im Gegensatz dazu ist exec() von Python 3 eine Funktion, die Funktionsbereiche immer optimiert.
Auswirkungen auf die Variablenbindung
In Python 2 werden bei Verwendung der exec-Anweisung Variablen verwendet gefunden in locals() wurden zurück in die Funktion locals kopiert. Dies führte dazu, dass die Variable innerhalb der Funktion an die in der exec-Anweisung angegebenen Werte gebunden wurde.
In Python 3 weist exec() dieses Verhalten jedoch standardmäßig nicht auf. Daher sind Variablen innerhalb der Funktion nicht an die in der exec()-Anweisung gebunden.
Zugriff auf lokale Variablen
So greifen Sie mit exec() in Python 3 auf lokale Variablen zu , sollte ein neuer Namespace (normalerweise ein Wörterbuch) erstellt und als Argument an die Funktion übergeben werden.
Überarbeitet Code
Unten finden Sie ein überarbeitetes Codebeispiel, das die korrekte Verwendung von exec() in Python 3 demonstriert, um das Verhalten von Python 2 zu erreichen:
def execute(a, st): namespace = {} exec("b = {}\nprint('b:', b)".format(st), namespace) print(namespace['b'])
In diesem Code a Das Wörterbuch mit dem Namen Namespace wird erstellt und an exec() übergeben. Auf alle in der exec()-Anweisung definierten Variablen kann über das Wörterbuch zugegriffen werden.
Hinweise
In der exec()-Dokumentation wird ausdrücklich davor gewarnt, Änderungen am standardmäßigen Locals-Wörterbuch vorzunehmen , da es möglicherweise keine Änderungen widerspiegelt, die innerhalb des exec()-Aufrufs vorgenommen wurden.
Das obige ist der detaillierte Inhalt vonWie unterscheidet sich das Verhalten der Funktion „exec“ in Python 2 und Python 3?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!