Funktion höherer Ordnung
- Funktion, die eine Funktion als Parameter akzeptiert oder als Ergebnis eine Funktion zurückgibt
Code anzeigen
Code anzeigen
Verschachtelte Funktion
- Interne Funktionen einkapseln
- Verbessern Sie die Effizienz, z. B. die Fakultätsfunktion. Überprüfen Sie zuerst die Eingabedaten
Schließung
- Externe Funktion gibt eine Funktion zurück
1 def nth_power (Exponent): 2 def exponent_of (Basis): 3 return base ** Exponent 4 return exponent_of 5 6 square = nth_power (2 ) 7 cube = nth_power (3 ) 8 9 print (square (2 )) 10 print ( Würfel (3))
Anonyme Funktion
- Nur eine Zeile
- Ausdruck statt Aussage
- Der übergebene Parameter ist ein iterierbares Objekt. Das Lambda ruft intern die Methode __next__ des iterierbaren Objekts auf, um den Wert als Parameter zu verwenden und den Wert vor dem Doppelpunkt der Lambda-Funktion zu übergeben, und gibt dann das Ergebnis der Ausdrucksberechnung nach dem Doppelpunkt zurück
- Vorteile: Reduzieren Sie die Wiederholbarkeit des Codes; modularer Code
1 [( Lambda x: x * x) (x) für x im Bereich (10)]
1 l = [(1,20), (3,0), (9,10), (2, -1 )] 2 l. Sortierung (Schlüssel = Lambda x: x [1 ]) 3 Druck (l)
Aufrufbares Objekt
- (): Anrufbarer Operator
- Das aufrufbare Objekt implementiert die integrierte Funktion callabel ()
1 Import zufällig 2 3 Klasse BingoCage: 4 def __init__ (self, items): 5 self._items = list (items) 6 random.shuffle (self._items) 7 def pick (self): 8 try : 9 return self._items .pop () 10 außer IndexError: 11 LookupError erhöhen ( ' aus leerem BingoCage auswählen ' ) 12 def __call__ (self): 13 return self.pick () 14 15 bingo = BingoCage (Bereich (5 )) 16 bingo.pick ()
Funktionsprogrammierung
- Jeder Code ist unveränderlich, dh er besteht aus reinen Funktionen
- map (function, iterable): Verwenden Sie für jedes Element in iterable die Funktionsfunktion und geben Sie schließlich eine neue durchlaufbare Sammlung zurück
- filter (function, iterable): Für jedes Element in iterable wird die Funktionsfunktion zur Beurteilung verwendet, und die Elemente, die True zurückgeben, bilden eine neue durchlaufbare Sammlung
- reduzieren (Funktion, iterierbar): Bearbeiten Sie die ersten beiden Elemente einer Menge und geben Sie dann das Ergebnis und das dritte Element zurück
1 # Karte函数 2 def faktoriellen (n): 3 return 1 , wenn n <2 else n * faktoriellen (n-1 ) 4 5 FACT = faktoriellen 6 - Liste (Karte (Tat - Bereich (10)))
1 Liste (Karte (Fakt, Filter ( Lambda n: n% 2, Bereich (6))))
1 aus functools import reduzieren 2 reduzieren ( Lambda x, y: x + y, [1,2,3,4,5])