Cet article vous apporte une analyse détaillée (exemple de code) de la programmation fonctionnelle Python. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.
Programmation Fonctionnelle, programmation fonctionnelle. Python fournit une prise en charge partielle de la programmation fonctionnelle. Pour la programmation fonctionnelle pure, pour n'importe quelle fonction, tant que l'entrée est certaine, la sortie est certaine, ce qui peut être considéré comme n'ayant aucun effet secondaire.
Nous savons que les résultats de calcul des fonctions peut être affecté à des variables , telles que x = abs(-5)
.
De même, les variables peuvent également pointer vers des fonctions, telles que f = abs
.
Si une variable pointe vers une fonction, le résultat renvoyé en appelant abs(x)
directement et en exécutant f(x)
est exactement le même.
On peut également considérer le nom de la fonction comme une variable, comme la fonction abs()
. Exécutez l'instruction abs=-5
, puis appelez abs(-5)
et une erreur sera signalée, car à ce moment la variable abs
ne pointe plus vers la fonction valeur absolue, mais pointe vers un entier -5.
Puisque les variables peuvent pointer vers des fonctions et que les fonctions peuvent également agir comme des variables, une fonction peut recevoir une autre fonction comme ses propres paramètres de forme, c'est-à-dire implémenter des fonctions d'ordre supérieur. Par exemple :
>>> def add(x , y , f ): # 把函数作为参数传入。 ... return f(x) + f(y) >>> add (-5,-2,abs) 7
Syntaxe : map(func,seq), qui reçoit deux paramètres, l'un est la fonction func et l'autre est l'objet itérable.
Fonction : boucle la fonction func passée sur chaque élément de la séquence seq et renvoie un nouvel objet itérable.
Remarque : La fonction map() renvoie un <map object>
, et on peut utiliser la fonction list() pour renvoyer les résultats obtenus sous la forme d'un liste.
Par exemple : utilisez map() pour implémenter f(x)=x*x
>>> def f(x): ... return x*x ... >>> map(f,[1,2,3,4,5]) <map object at 0x0327F670> >>> list(map(f,[1,2,3,4,5])) # 传入的函数f作用于序列的每个元素调并用list() [1, 4, 9, 16, 25]
Bien sûr, vous pouvez également utiliser d'autres méthodes pour y parvenir :
exp1 :list( map((lambda x:x*x),[1,2,3,4,5]))
exp2:[x*x for x in [1,2,3,4,5]]
Syntaxe : reduce(func,list)
, doit accepter deux paramètres.
Action : Appliquer la fonction func
à la list
séquence[x1,x2,x3,...]
. Supprimez les deux premiers éléments de la séquence x1
et x2
, appliquez func
pour obtenir une valeur unique, telle que a
, puis combinez a
avec l'élément suivant de la séquence x3
pour faire func
Opération et répéter. L'effet est équivalent à reduce(f,x1,x2,x3)=f(f(x1,x2),x3)
Remarque : Pour utiliser reduce()
, vous devez importer le module from functools import reduce
Vous pouvez trouver une châtaigne avec laquelle jouer~~~
Syntaxe : filter(func,[序列])
, reçoit une fonction "filtre", et une séquence. Ce qui est renvoyé est un objet itérable Iterator
.
Fonction : Filtrez la séquence selon les func
règles, filter()
appliquez la fonction passée func
à chaque élément en conséquence, puis renvoyez Le la valeur True
ouFalse
est conservée comme élément correspondant de True
.
Remarque : Semblable à map()
, filter()
renvoie un objet itérable, vous devez donc utiliser list()
pour afficher les résultats obtenus et renvoyer list
Tapez.
Par exemple : dans une liste, supprimer les nombres pairs et conserver les nombres impairs.
>>> def is_odd(n): ... return n % 2 == 1 # 返回0(false) 或1(True) ... >>> list( filter(is_odd,[1,2,3,4,5,6,7,8,9]) ) [1, 3, 5, 7, 9]
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!