Heim  >  Artikel  >  Backend-Entwicklung  >  Wie unterscheiden sich „globals()', „locals()' und „vars()' in ihrem Zugriff auf Namespaces in Python?

Wie unterscheiden sich „globals()', „locals()' und „vars()' in ihrem Zugriff auf Namespaces in Python?

Linda Hamilton
Linda HamiltonOriginal
2024-11-14 09:18:02508Durchsuche

How Do `globals()`, `locals()`, and `vars()` Differ in Their Access to Namespaces in Python?

Die Unterschiede zwischen den Funktionen globals(), locals() und vars() verstehen

In Python gelten globals(), locals( ) und vars() spielen eine entscheidende Rolle beim Zugriff auf Namespaces und deren Inhalt.

globals() gibt konsistent ein Wörterbuch zurück, das den Namespace des aktuellen Moduls darstellt. Bei jedem Aufruf wird das gleiche Wörterbuch bereitgestellt.

locals() liefert ein Wörterbuch, sein Verhalten ist jedoch kontextabhängig. Innerhalb einer Funktion gibt sie ein Wörterbuch der lokalen Variablen und Abschlussvariablen zurück, die beim Aufruf vorhanden waren. Dieses Wörterbuch wird nicht dynamisch aktualisiert, sodass Änderungen an lokalen Variablen nach dem Funktionsaufruf nicht darin widergespiegelt werden. Durch das Zuweisen von Werten zum Wörterbuch werden die lokalen Variablen jedoch nicht aktualisiert. Außerhalb einer Funktion gibt locals() das eigentliche Wörterbuch zurück, das als aktueller Namespace dient, was sowohl Reflexion als auch Aktualisierungen ermöglicht.

vars() bietet mehrere Funktionalitäten. Wenn es ohne Argument aufgerufen wird, verhält es sich wie locals() und gibt ein Wörterbuch des aktuellen Namespace zurück. Sein Hauptunterschied liegt jedoch in seiner Fähigkeit, ein Objekt als Argument zu akzeptieren. In diesem Fall gibt es das Attribut dict dieses Objekts zurück. dict wird normalerweise zum Speichern von Attributdaten für Objekte verwendet, einschließlich Klassenvariablen und Modul-Globals.

Auswirkungen von Aktualisierungen auf Ergebnisse

Aktualisierung der Wörterbücher Die von globals(), locals() oder vars() zurückgegebenen Werte haben im Allgemeinen keine Auswirkungen auf die entsprechenden Namespaces oder Objekte. Bei globals() haben alle am Wörterbuch vorgenommenen Änderungen keine Auswirkungen auf die Globals des Moduls. Bei locals() wird das Wörterbuch nicht dynamisch mit Änderungen an lokalen Variablen oder durch Zuweisungen zu seinen Einträgen aktualisiert. Im Fall von vars() wirken sich Aktualisierungen des Wörterbuchs nicht auf die Attribute des referenzierten Objekts aus.

Es ist wichtig zu beachten, dass Python-Versionen und -Implementierungen das Verhalten dieser Funktionen beeinflussen können und die hier bereitgestellten Details variieren können abhängig von der spezifischen Umgebung.

Das obige ist der detaillierte Inhalt vonWie unterscheiden sich „globals()', „locals()' und „vars()' in ihrem Zugriff auf Namespaces 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