Verschachtelte Funktion:
Eine verschachtelte Funktion ist in einer anderen Funktion definiert. Diese Funktionen können auf eine Variable der äußeren Funktion zugreifen. Die nicht lokale Variable, auf die wir in ihrem Bereich zugreifen können.
Ex:
Defuter_Fun (s):Ausgang:
Im obigen Beispiel ist das Inner_fun eine verschachtelte Funktion, und MSG ist eine nicht lokale Variable. Wir können auf diese im Outer_Fun -Körper zugreifen.
Abschlussdefinition:
Die Python -Schließung ist eine verschachtelte Funktion. Wir können auf die Variable außerhalb des Geltungsbereichs zugreifen. Dieses Konzept ist wichtig, um Python -Dekorateure zu verstehen.
Alle verschachtelten Funktionen sind keine Schließungen. Die folgenden drei Kriterien sollten erfüllen, um eine Schließung zu definieren:
Ex:
#Definierende verschachtelte FunktionenAusgang:
Im obigen Beispiel ist das GREET_MSG die äußere Funktion. Dies schafft eine innere Funktion (GREET_MSG ist hier schließt) und wird zurückgegeben.
Die äußere Funktion Greet_MSG gibt eine print_msg -Funktion zurück und wird der Variablen call_fun zugewiesen. Hier sehen wir, dass die äußere Funktion ihre Ausführung beendet hat, aber wir können trotzdem auf die MSG -Variable zugreifen.
So ändern Sie die Variable im Verschluss:
Mithilfe von nichtlokalem Schlüsselwort können wir die Variable in der inneren Funktion ändern.
Ex: Ohne nichtlokale Schlüsselwort zu verwenden. Hier versuchen wir, die Num -Variable im Verschluss zu modifizieren und haben ungebundene ERROR erhalten, weil Python NUM als lokale Variable betrachtet und Num nicht in Fun definiert ist ().
DefGenerate_num ():Ausgang:
Ex: Mit Verwendung nicht lokal Stichwort. Im folgenden Beispiel können wir die NUM -Variable ändern können.
DefGenerate_num ():Ausgang:
Wir werden mehr Beispiel mit einem Verschluss schreiben:
Ex: Dies wird bestandene Argumente und Funktionsname drucken
Trouuter (Func):Ausgang:
Ex: Im folgenden Beispiel werden jedes Mal, wenn der Verschluss aufgerufen wird.
Defaddition ():Ausgang:
Ex: In diesem Beispiel multiplizieren Sie die Parameterzahl der inneren Funktion mit dem Parameter der äußeren Funktion
Def multiply_by_number (m):
Ausgang:
Abschluss:
Die Python -Schließung ist eine verschachtelte Funktion. Damit können wir es vermeiden, globale Variablen mit nicht lokalen Variablen zu verwenden. Dies liefert einige Daten, die dieses Konzept verstecken und verstehen, das beim Aufbau eines Python -Dekorators hilfreich ist.