Heim > Artikel > Backend-Entwicklung > Einführung in drei Arten von Namespaces in Python (mit Beispielen)
Dieser Artikel bietet Ihnen eine Einführung in die drei Namensraummethoden in Python (mit Beispielen). Ich hoffe, dass er Ihnen als Referenz dienen wird.
Es gibt drei Arten von Namespaces in Python:
Der integrierte Namespace ist der Raum, in dem beim Starten des Interpreters automatisch verschiedene Namen in den Speicher geladen werden, z. B. Drucken, Eingabe usw . Namen, die verwendet werden können, wenn sie definiert werden müssen
Der globale Namensraum ist der Raum, in dem sich alle von uns definierten Variablennamen und Funktionsnamen von oben nach unten befinden. Er wird während der Ausführung in den Speicher geladen des Programms von oben nach unten.
Lokaler Namespace, z. B. der beim Ausführen einer Funktion geöffnete Bereich, speichert verschiedene innerhalb der Funktion definierte Namen. Dieser lokale Namespace verschwindet, wenn die Funktionsausführung endet.
Sie können die Namen im globalen und integrierten Namespace im lokalen Namespace verwenden.
Sie können die Namen im integrierten Namespace im globalen Namespace verwenden, Sie können jedoch nicht die verwenden Namen im lokalen Namensraum.
Globale und lokale Namen können nicht in integrierten Namespaces verwendet werden.
kann anschaulich verstanden werden, da der integrierte Namespace die höchste Ebene hat und ohne Definition verwendet werden kann, gefolgt vom globalen Namespace und die niedrigste Ebene der lokale Namespace ist.
Wenn ein Namespace auf niedriger Ebene einen Namen verwendet, wird dieser zunächst in seinem eigenen Namespace gesucht Wenn nicht, wird die Suche im übergeordneten Bereich fortgesetzt, bis der integrierte Namespace der obersten Ebene vorhanden ist. Wenn nicht, wird ein Fehler gemeldet.
Zum Beispiel:
num = 1 #这是全局命名空间内定义的num = 1 def func1(): #这个函数会创建一个局部命名空间1 num = 2 #这是在局部命名空间1定义的num = 2 def func2(): #这个函数会创建一个局部命名空间2 num = 3 #这是在局部命名空间2 内 定义的num = 3 print(num) #这是在局部命名空间2内 使用num 变量 func2() # 调用函数func2时 会执行该命令创建局部命名空间2 func1() #调用函数func1时会创建局部命名空间1, #这几个命名空间的级别顺序是:内置>全局>局部1>局部2 #当print(num)指令执行时它会在局部2内查找是否有num,发现有则直接引用,如果没有则会到上一级(局部1)中查找,局部1没有则继续到上一级(全局)查找
Sehen Sie sich ein anderes Beispiel an:
#max()函数是内置的函数,如果我们在全局命名空间中定义了函数名为max的函数时,则该函数就失效了,也就是说在自身空间内找到了max()后就不去内置命名空间查找了 def max(a,b,c): return 'max失效了?' print(max(1,2,3))# 正常情况下应该输出3(max函数功能是返回最大值),但是因为我们把max这个名字占用了,所以当使用时程序就不去上一级空间(内置命名空间)去查找了
Die beiden Funktionen globals() und locals()
, die sich auf Namespaces beziehen, können globals() verwendet werden zeigt alle definierten Namen im globalen Namespace an
Sie können locals() verwenden, um alle definierten Namen im aktuellen Namespace anzuzeigen. Wenn es global ist, wird das globale zurückgegeben, und wenn es lokal ist, wird das lokale
zurückgegeben Die Rückgabe dieser beiden Funktionen Der Wert kann als Wörterbuch betrachtet werden und das Format ist {key1:value1,key2:value2,.....}
Wenn Funktion 1 in Funktion 2 verschachtelt ist, z Der unveränderliche Datentyp in Funktion 1. Die Variable kann in Funktion 2 referenziert, aber nicht geändert werden.
def func1(): a = 1 def func2(): a = a + 1 #此处会报一个严重错误,因为a同时出现在等号两边,Python会先执行等号右边的表达式, #发现你在引用a,然后它会先在本空间查找a,结果找到了等号左边的a,其结果就是“在定义变量前引用变量” pass func2() func1()rreee
nonlocal kann nur auf lokale Variablen reagieren. Bei Verwendung wird automatisch gesucht, ob der lokale Namespace der oberen Ebene vorhanden ist die Variable. Wenn nicht, suchen Sie weiter nach oben, bis zur obersten Ebene „lokaler Namespace“
Das obige ist der detaillierte Inhalt vonEinführung in drei Arten von Namespaces in Python (mit Beispielen). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!