Heim >Backend-Entwicklung >Python-Tutorial >Was sind die Hauptunterschiede zwischen globals(), locals() und vars() in Python?

Was sind die Hauptunterschiede zwischen globals(), locals() und vars() in Python?

Barbara Streisand
Barbara StreisandOriginal
2024-11-26 01:08:10207Durchsuche

What are the Key Differences Between globals(), locals(), and vars() in Python?

Analyse der Unterschiede zwischen globals(), locals() und vars()

Im Bereich der Namespace-Manipulation von Python gibt es einige drei wesentliche Funktionen: globals(), locals() und vars(). Jede dieser Funktionen gibt ein Wörterbuch zurück, aber die zugrunde liegenden Unterschiede verdienen eine genauere Betrachtung.

globals()

Globals() gibt konsistent ein Wörterbuch zurück, das den Namensraum des darstellt aktuelles Modul. Dieses Wörterbuch enthält alle in diesem Modul definierten globalen Variablen, Funktionen und Klassen.

locals()

Im Gegensatz zu globals() weist locals() ein dynamisches Verhalten auf . Wenn es innerhalb einer Funktion aufgerufen wird, gibt es ein Wörterbuch zurück, das die aktuellen lokalen Variablen enthält, einschließlich derjenigen aus Abschlussvariablen. Dieses Wörterbuch ist jedoch eine temporäre Momentaufnahme. Nur Aufrufe von locals() oder Zugriffe auf das f_locals-Attribut des aktuellen Stack-Frames lösen eine Aktualisierung seines Inhalts aus. Zuweisungen zum locals()-Wörterbuch oder zu den entsprechenden Variablen werden nicht gegenseitig aktualisiert.

vars()

Vars() gibt ebenfalls ein Wörterbuch zurück, aber dessen Vielseitigkeit geht über Modul- und Funktionsnamespaces hinaus. Wenn vars() ohne Argumente aufgerufen wird, verhält es sich ähnlich wie locals() und gibt das Wörterbuch für den aktuellen Namespace zurück. Wenn jedoch ein Objekt als Argument übergeben wird, untersucht vars() das Dikt dieses Objekts, um seine Attribute abzurufen.

Updates und Effekte

Weder locals() noch vars() halten ihre Wörterbücher automatisch mit Änderungen im Namespace auf dem neuesten Stand. Durch Zuweisungen zu Variablen werden die Wörterbücher nicht aktualisiert, und umgekehrt werden Änderungen an den Wörterbüchern nicht an die Variablen weitergegeben. Wenn jedoch auf f_locals zugegriffen wird (im Fall von locals()) oder auf das dict des Objekts zugegriffen wird (im Fall von vars()), werden die Wörterbücher möglicherweise aktualisiert.

In Zusammenfassend stellen globals(), locals() und vars() drei Tools zum Bearbeiten von Namespaces in Python bereit. Das Verständnis ihrer Unterschiede ermöglicht es Entwicklern, präzise und kontrolliert durch die Laufzeitumgebung von Python zu navigieren.

Das obige ist der detaillierte Inhalt vonWas sind die Hauptunterschiede 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