Die Unterschiede zwischen globals(), locals() und vars() verstehen
In Python globals(), locals() und vars() sind Funktionen, die Einblicke in den Namensraum des aktuellen Programms bieten. Lassen Sie uns ihre Unterschiede untersuchen:
globals()
-
Zweck: Gibt ein Wörterbuch des globalen Namespace zurück.
-
Verhalten: Konsistent, gibt immer das Namespace-Wörterbuch für das aktuelle Modul zurück.
locals()
-
Zweck: Ruft ein Wörterbuch ab, das den aktuellen Namespace darstellt.
-
Verhalten: Dynamisch, abhängig vom Kontext des Aufrufers.
-
Innerhalb einer Funktion: Gibt ein Wörterbuch zurück, das die aktuellen lokalen Variablen und alle Abschlussvariablen enthält. Mehrere Aufrufe innerhalb desselben Stapelrahmens geben aufgrund seiner Zuordnung zum f_locals-Attribut des Rahmenobjekts dasselbe Wörterbuch zurück. Aktualisierungen dieses Wörterbuchs werden im lokalen Namespace widergespiegelt, aber das direkte Zuweisen von Werten zum Wörterbuch ändert nicht die entsprechenden lokalen Variablen.
-
Außerhalb einer Funktion: Gibt das tatsächliche Wörterbuch zurück, das als dient aktueller Namensraum. Änderungen an diesem Wörterbuch werden mit dem Namespace synchronisiert und umgekehrt.
vars()
-
Zweck: Akzeptiert ein Objekt als Argument und gibt das dict-Attribut dieses Objekts zurück.
-
Verhalten:
- Ohne Argument, Es gibt das dict des aktuellen Namespace zurück (ähnlich wie locals() außerhalb einer Funktion).
- Wenn ein Objekt bereitgestellt wird, ruft es das __dict__ des Objekts ab, das normalerweise seine Attributdaten enthält.
- Aktualisierungen des zurückgegebenen Wörterbuchs beeinflussen die Attribute des Objekts, und umgekehrt werden Änderungen an den Attributen des Objekts im Wörterbuch widergespiegelt.
Wichtiger Hinweis:
Das Verhalten von locals() und vars() kann je nach Python-Version und Implementierung variieren. In CPython 2.x könnte locals() mit der Verwendung von „exec 'pass'“ anders funktionieren.
Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen „globals()“, „locals()“ und „vars()“ in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!
Stellungnahme: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