⊗pyPmFnCl 23 of 129 menu

Closures in Python

Unter Closure (closure) versteht man eine Funktion zusammen mit allen externen Variablen, die für sie zugänglich sind.

In Python meint man, wenn man von "Closure einer Funktion" spricht, meist nicht die Funktion selbst, sondern genau ihre externen Variablen.

Nehmen wir an, wir haben die folgende Funktion outer, in der die Variable i und eine innere Funktion inner deklariert ist. In ihr wird zu i eins addiert. Damit die Variable i korrekt funktioniert, fügen wir die Anweisung nonlocal hinzu:

def outer(): i = 0 def inner(): nonlocal i i += 1 print(i) return inner

Lassen Sie uns nun die äußere Funktion in die Variable res setzen und sie mit runden Klammern aufrufen:

res = outer() res() # gibt 1 aus

Lassen Sie uns res mehrmals aufrufen. Nach der Ausführung des Codes wird der Zähler i jedes Mal um eins erhöht:

res() # gibt 2 aus res() # gibt 3 aus res() # gibt 4 aus

Allerdings gibt es hier eine wichtige Nuance - jeder Aufruf der Funktion outer wird seinen eigenen Zähler erhöhen. Lassen Sie uns den ersten Aufruf von outer in die Variable res1 schreiben und den zweiten Aufruf - in die Variable res2. Dann geben wir sie nacheinander in der Konsole aus:

res1 = outer() res1() # gibt 1 aus res1() # gibt 2 aus res1() # gibt 3 aus res2 = outer() res2() # gibt 1 aus res2() # gibt 2 aus res2() # gibt 3 aus

Gegeben ist der folgende Code:

def outer(): i = 10 def inner(): nonlocal i i -= 2 print(i) return inner res1 = outer() res1() res1() res2 = outer() res2() res2() res2()

Sagen Sie, was in der Konsole ausgegeben wird.

Erstellen Sie eine Funktion, deren jeder Aufruf die nächste Fibonacci-Zahl aufruft.

Erstellen Sie eine Funktion, die eine zufällige ganze Zahl in einem Intervall ausgibt, aber so, dass nicht zweimal hintereinander dieselbe Zahl erscheint.

Deutsch
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wir verwenden Cookies für den Betrieb der Website, Analyse und Personalisierung. Die Datenverarbeitung erfolgt gemäß der Datenschutzerklärung.
alle akzeptieren anpassen ablehnen