Fonction d'ordre supérieur
- Fonction qui accepte une fonction comme paramètre ou renvoie une fonction comme résultat
Afficher le code
Afficher le code
Fonction imbriquée
- Encapsuler les fonctions internes
- Améliorez l'efficacité, comme la fonction factorielle, vérifiez d'abord les données d'entrée
Fermeture
- La fonction externe renvoie une fonction
1 def nth_power (exposant): 2 def exponent_of (base): 3 return base ** exposant 4 return exponent_of 5 6 square = nth_power (2 ) 7 cube = nth_power (3 ) 8 9 print (square (2 )) 10 print ( cube (3))
Fonction anonyme
- Une seule ligne
- Expression plutôt que déclaration
- Le paramètre transmis est un objet itérable. Le lambda appelle en interne la méthode __next__ de l'objet itérable pour prendre la valeur comme paramètre avant de passer la valeur devant les deux-points de la fonction lambda, puis renvoie le résultat du calcul de l'expression après les deux-points.
- Avantages: réduction de la répétabilité du code; code modulaire
1 [( lambda x: x * x) (x) pour x dans la plage (10)]
1 l = [(1,20), (3,0), (9,10), (2, -1 )] 2 l. Tri (clé = lambda x: x [1 ]) 3 impression (l)
Objet appelable
- (): Opérateur appelable
- L'objet appelable implémente la fonction intégrée callabel ()
1 importation aléatoire 2 BingoCage 3 classes : 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 sauf IndexError: 11 raise LookupError ( ' pick from empty BingoCage ' ) 12 def __call__ (self): 13 return self.pick () 14 15 bingo = BingoCage (plage (5 )) 16 bingo.pick ()
Programmation fonctionnelle
- Chaque morceau de code est immuable, c'est-à-dire composé de fonctions pures
- map (fonction, itérable): Pour chaque élément dans itérable, utilisez la fonction fonction, et enfin retournez une nouvelle collection traversable
- filtre (fonction, itérable): pour chaque élément dans itérable, la fonction fonction est utilisée pour juger, et les éléments qui retournent True forment une nouvelle collection traversable
- réduire (fonction, itérable): opérer sur les deux premiers éléments d'un ensemble, puis renvoyer le résultat et le troisième élément, etc.
1 # map 函数 2 def factorial (n): 3 return 1 if n <2 else n * factorial (n-1 ) 4 5 fact = factorial 6 list (map (fact, range (10)))
1 liste (carte (fait, filtre ( lambda n: n% 2, plage (6)))))
1 depuis functools import réduire 2 réduire ( lambda x, y: x + y, [1,2,3,4,5])