Maison >développement back-end >Tutoriel Python >Analyse détaillée de la programmation fonctionnelle Python (exemples de code)

Analyse détaillée de la programmation fonctionnelle Python (exemples de code)

不言
不言original
2018-09-18 15:27:111697parcourir

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.

1. Fonctions d'ordre supérieur

1. Les variables pointent vers des fonctions

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.

2. Le nom de la fonction est également une variable

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.

3. Fonction comme paramètre formel

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

2. Fonctions intégrées de programmation fonctionnelle

1. map(func,seq)

  • 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]]

2. réduire(func,list)

  • 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 funcOpé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~~~

3. filter()

  • 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 TrueouFalse 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 listTapez.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn