Die in Python geschriebenen Funktionen gelten als erstklassige Objekte. Der äquivalente Status der anderen Objekte wird den Funktionen in Python vergeben. Funktionen können dynamisch erstellt und zerstört werden, Variablen zugeordnet, in Sammlungen gespeichert, als Argumente und mehr geliefert werden. Der Begriff „verschachtelte Funktionen“, manchmal als „innere Funktionen“ bezeichnet, bezieht sich auf Funktionen, die in den anderen Funktionen definiert sind.
Es handelt sich um eine verschachtelte Funktion namens Build -Nachricht. Seine äußere Hauptfunktion ist dort, wo es definiert und aufgerufen wird.
In seiner grundlegendsten Form ist der Verschluss nur eine verschachtelte Funktion, die Zugriff auf eine freie Variable hat, die nach der Ausführung einer umschließenden Funktion abgeschlossen ist. Ein Python -Verschluss hat diese drei Eigenschaften:
Jede Variable, die im örtlichen Bereich ungebunden ist. Das nicht-lokale Schlüsselwort ist erforderlich, damit Verschlüsse mit unveränderlichen Variablen wie Zeichenfolgen und Ganzzahlen funktionieren, um zu funktionieren. Python -Schließungen bieten eine Art Datenmaskierung und helfen bei der Vermeidung der Verwendung globaler Variablen.
Variablenbereich
Wir müssen auch den variablen Python -Bereich kennenlernen, um die Schließungen ausführlicher zu verstehen. Der Bereich ist ein solcher Bereich, in dem die Variable beobachtet werden kann. Es kann nur der angegebene Bereich einer Variablen verwendet werden. Nach den drei verschiedenen Bereichen können Variablen häufig an drei getrennten Stellen zugewiesen werden:
Warum Schließungen verwenden??
Die Hauptgründe, warum wir Dekorateure einstellen, sind in der folgenden Liste umrissen:
Wann schafft Python den Verschluss??
Python erstellt jedes Mal, wenn eine Funktion aufgerufen wird. Python erzeugt zusätzlich einen frischen Verschluss, wenn diese Funktion einen erzeugt.
Erstellen Sie eine Funktion namens Multiplikator, die zuerst eine Schließung erzeugt. Die Multiplikation von zwei Eingängen ist die Multiplikatorfunktion zurück. Aber es verwendet eine Schließung anstelle davon. Fügen Sie als nächstes drei Aufrufe zur Multiplikatorfunktion hinzu. Drei Schließungen werden durch Aufrufen dieser Funktionen erzeugt. Eine Zahl wird mit jeder Funktion mit 2, 4 und 5 multipliziert. Dann führen Sie die Funktionen der Schließungen aus.
Beispiel 1:
Um eine innere Funktion von außerhalb der äußeren Funktion aufzurufen, müssen wir zunächst herausfinden, wie. Diese Methoden können einen Wert zurückgeben. Hier sind „T“ und „U“ lokale Variablen der Funktion f ().
Da auf die Variablen „T“ und „U“ nach dem Ausführen von H = f () nicht mehr zugegriffen werden können, sind alle Variablen von F (lokal) verschwunden. Wir behalten jedoch immer noch den "T" -Werwert, der zurückgegeben und in H gespeichert wurde. Wir könnten daher in der Lage sein, die äußere Funktion die Innenfunktion zurückzugeben. Pythons erstklassige Funktionen machen es dafür machbar. Dies impliziert, dass Sie sie den Variablen zuweisen können, da Python die Funktionen als Werte interpretiert, sie als Funktionsargumente bereitstellen oder eine andere Funktion zurückgeben.
Beispiel 2:
Dieses Beispiel zeigt, dass die innere Funktion „G“ durch die äußere Funktion f (t) zurückgegeben wird.
Die Funktion G () wird nun durch den Ausdruck F (t) zurückgegeben. Durch die Zuweisung des Wertes von „G“ zu „H“, wenn wir h = f (i) schreiben, kann „H“ jetzt als „G“ angesehen werden und Gs Argument annehmen. H (j) ist gleichbedeutend mit dem Aufrufen von "G" als Ergebnis (j).
Beispiel 3:
Die Funktion G (), nicht ein bestimmter Wert davon, ist das, was f (t) zurückgibt. Berücksichtigen Sie diese Instanz dafür und schreiben Sie Folgendes:
Dieser Code gibt einen Fehler zurück. Es bedeutet, dass wir auf einen Fehler gestoßen sind. Wir können "H" nicht verwenden, um eine Funktion aufzurufen, da wir das Ergebnis von G (u) aus F (t) zurückgeben, was ein Grund für den Fehler ist.
Beispiel 4:
Wir müssen f (a) in „H“ nicht behalten. Die Alternative besteht darin, F (a) direkt (b) anzurufen. Betrachten Sie die folgende Abbildung:
Die Notwendigkeit, einen Unterschied zwischen f (a, b) und f (a) zu machen, muss immer im Auge behalten werden (B). Es erfordert zwei Parameter, um die Funktion F (a, b) aufzurufen. Die Funktion f (a) (b) hingegen ist eine Reihe von verschachtelten Funktionen, von denen jeder nur einen Eingang akzeptiert. Diese als unary Funktion bezeichnete Funktionsart akzeptiert nur eine Eingabe. Folglich ist f (a) (b) eine Reihe von zwei verschachtelten Unary -Funktionen. Also wird f (a) zuerst bewertet. Um diese Funktionen miteinander zu ketten, sollte f (a) eine Funktion zurückgeben. Hier gibt es die interne Funktion "G" zurück. Folglich f (a) (b) = g (b).
Beispiel 5:
Die Verwendung einer längeren Reihe von Unary -Funktionen ist einfach möglich, indem der aktuelle Ansatz erweitert wird. Die drei verschachtelten Unary -Funktionen können auch in diesem Fall gesehen werden. Die erste Funktion, F (t), hat eine Funktion darin, die als G (U) bezeichnet wird, und G (U) hat eine Funktion, die als h (v) bezeichnet wird. Jede innere Funktion wird durch ihre äußere Funktion zurückgegeben.
Hier definieren wir die Funktionen. Diese Funktionen geben die Werte zurück. Als nächstes initialisieren wir drei Variablen und weisen ihnen drei verschiedene ganze Zahlen zu. Dann nennen wir diese Variablen die Funktionsattribute der Funktionen.
Beispiel 6:
Angenommen, es gibt einige nichtlokale Variablen in der äußeren Funktion. Mal sehen was passiert.
Das Ausführen zeigt, dass es reibungslos funktioniert und dass G (U) Zugriff auf „T“ und „V“ hat. Wie ist es jedoch überhaupt denkbar? Jetzt, da wir außerhalb von Fs Geltungsbild (T) liegen, sollten „T“ und „V“ nach der Durchführung von F (T) nicht erreichbar sein. Warum kann G (u) immer noch auf sie zugreifen?? Aus dem Grund ist G (u), die innere Funktion, jetzt eine Schließung.
Beispiel 7:
Ändern wir die in dieser Instanz verwendete interne Funktion.
Wenn das passiert, kann es nicht mehr als Schließung bezeichnet werden. Die Erklärung ist, dass G (u) nicht auf die nichtlokalen Variablen "T" und "V" zugreift. Daher ist G (u) nicht erforderlich, um sie aufzuzeichnen.
Beispiel 8:
In diesem Fall werden wir sehen, ob wir die Werte von zwei Parametern der Funktionen gleich einstellen, dann wird diese Funktion auf eine Schließung oder nicht festgelegt.
Noch einmal ist „T“ nur erforderlich, um in diesem Fall „u“ zu initialisieren. Daher ist G (u) keine Schließung, da „G“ nicht „t“ deklarieren muss.
Abschluss
In diesem Leitfaden sprachen wir über den Pythonverschluss. Wir haben auch die verschiedenen Codes im Zusammenhang mit diesem Thema ausgeführt. Wir benötigen eine Funktion innerhalb des Verschlusses, um Folgendes zu definieren:
Mit anderen Worten, eine Funktion und ein erweiterter Umfang mit freien Variablen werden beide als Schließungen angesehen. Das Aufrufen der äußeren Funktion, um die Schließung zurückzugeben, ist erforderlich, nachdem die Schließung erklärt wurde, um sie zu initialisieren.