Python verwaltet als dynamische Sprache eine benannte Umgebung aus Konstanten, Variablen, Funktionen usw., wenn der Code ausgeführt wird. Diese Umgebung ist ein Namespace, der auch als Namespace bezeichnet werden kann. In diesem Artikel werden Namespaces in Python ausführlich vorgestellt.
- Namespace-Übersicht
Der Namespace in Python ist ein Wörterbuch, das die Korrespondenz zwischen Namen und Objekten speichert, wobei sich der Name auf den Bezeichner (Bezeichner) und das Objekt auf alle Objekte bezieht. Alles in Python ist ein Objekt, einschließlich Ganzzahlen, Gleitkommazahlen, Zeichenfolgen, Funktionen, Klassen usw.
- Namespace-Klassifizierung
Namespaces in Python können in drei Typen unterteilt werden:
(1) Integrierter Namespace (Built-in Namespace)
Built-in Namespace ist ein Namespace, der geladen wird, wenn der Python-Interpreter gestartet wird. Der integrierte Namespace enthält standardmäßig einige Funktionen und Variablen, wie z. B. print(), type(), str() usw., die Entwickler direkt verwenden können. Auf integrierte Namespaces kann auch über das Modul „Builtins“ zugegriffen werden. (2) Globaler Namespace
Der globale Namespace bezieht sich auf Variablen, Funktionen usw., die im Modul definiert sind, nicht in der Funktion oder Klasse. Auf in einem Modul definierte globale Variablen kann auch in anderen Modulen zugegriffen werden. Ein Modul hat nur einen globalen Namensraum und alle Funktionen im Modul können auf diesen Namensraum zugreifen.
(3) Lokaler Namespace
Lokaler Namespace ist ein Namespace, der beim Aufruf einer Funktion erstellt wird und zum Speichern lokaler Variablen, Parameter, temporärer Variablen usw. der Funktion verwendet wird. Wenn die Funktion den Aufruf beendet, wird auch der lokale Namespace zerstört.
Namespace-Suchregeln
Bei Verwendung einer Variablen sucht Python zunächst nach der entsprechenden Variablen im lokalen Namespace. Wenn sie nicht gefunden wird, sucht sie im globalen Namespace und schließlich im integrierten Namespace. Mit anderen Worten: Python sucht nach Variablen in der Reihenfolge lokal, global und integriert. Diese Reihenfolge der Suche nach Variablen wird als LEGB-Regel bezeichnet. -
Geltungsbereich des Namespace In Python hat jede Funktion, jedes Modul und jede Klasse ihren eigenen Namespace. Wenn ein Name an ein Objekt gebunden ist, hat er nur innerhalb dieses Namensraums eine Bedeutung. Wenn der Name an einen lokalen Namespace gebunden ist, hat er nur innerhalb der Funktion eine Bedeutung. Wenn der Name an den globalen Namespace gebunden ist, hat er eine Bedeutung innerhalb des Moduls Sinn im gesamten Python-Interpreter. -
Rufen Sie den Namespace über die Funktionen globals() und locals() ab. Sie können die Funktionen globals() und locals() in Python verwenden, um den entsprechenden globalen Namespace und lokalen Namespace abzurufen. Die Funktion globals() gibt das Wörterbuch des globalen Namespace zurück, und die Funktion locals() gibt das Wörterbuch des lokalen Namespace zurück. -
Hinweise zu Namespaces (1) Die Namen im Namespace müssen legale Bezeichner sein. - (2) Funktionen und Klassen erstellen einen neuen Namespace.
(3) Variablennamen können an andere Objekte im Namespace neu gebunden werden.
(4) Durch die Verwendung der globalen Anweisung können Variablen innerhalb der Funktion auf globale Variablen verweisen.
(5) Durch die Verwendung der nichtlokalen Anweisung können Variablen innerhalb der Funktion auf lokale Variablen der äußeren Funktion verweisen.
(6) Die Namespace-Suche in Python wird gemäß den LEGB-Regeln durchgeführt.
Fazit In diesem Artikel werden Namespaces in Python ausführlich vorgestellt, einschließlich Namespace-Übersicht, Namespace-Klassifizierung, Namespace-Suchregeln, Namespace-Bereich, Abrufen von Namespaces über die Funktionen globals() und locals() usw. Für Python-Anfänger ist das Verständnis von Namespaces ein wichtiger Schritt beim Erlernen der Python-Sprache.
Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung der Namespaces in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!