Python: Fonctions: Difference between revisions
Wiki-cours (talk | contribs) No edit summary |
Wiki-cours (talk | contribs) No edit summary |
||
Line 1: | Line 1: | ||
__NOTOC__ | __NOTOC__ | ||
[[Memento_Python|<--Sommaire]] | [[Memento_Python|<--Sommaire]] | ||
=== | === Définir une fonction === | ||
Deux options suivant la complexité | |||
1. définition usuelle: '''return''' permet que la fonction renvoie un résultat mais ce n'est pas obligatoire, la fonction peut simplement manipuler les données en entrée | |||
<source lang="py"> | <source lang="py"> | ||
def f(x): | def f(x): | ||
return x**2 | return x**2 | ||
</source> | |||
2. on peut également définir une fonction '''lambda''' ou 'fonction anonyme' selon | |||
<source lang="py"> | |||
f = lambda x: x**2 | f = lambda x: x**2 | ||
</source> | </source> | ||
dans l'exemple ci-dessus, le caractère anonyme n'est pas très clair car on lui a affecté la variable f pour l'utiliser avec f(x) comme précédemment le caractère anonyme apparaît lorsqu'on passe ce type de fonction en argument. | |||
=== | === Appliquer une fonction à une liste === | ||
une suppose une fonction f() définie, par exemple | |||
<source lang="py"> | <source lang="py"> | ||
f = lambda x: x**2 | f = lambda x: x**2 | ||
# initialisation d'une liste | A = range(10)# initialisation d'une liste | ||
</source> | |||
une première version lourde mais qui ressemble au C | |||
<source lang="py"> | |||
B = [ 0.0 ]*len(A) | B = [ 0.0 ]*len(A) | ||
for i in range(len(A)): | for i in range(len(A)): | ||
B[i] = f(A[i]) | B[i] = f(A[i]) | ||
</source> | |||
une version similaire mais écrite en ligne | |||
<source lang="py"> | |||
B = [ f(A[i]) for i in range(len(A)) ] | B = [ f(A[i]) for i in range(len(A)) ] | ||
</source> | |||
le même résultat en itérant directement sur les éléments de A | |||
<source lang="py"> | |||
B = [ f(a) for a in A ] | B = [ f(a) for a in A ] | ||
</source> | |||
en utilisant la fonction map du standard Python (générique) | |||
<source lang="py"> | |||
B = map(f,A) | B = map(f,A) | ||
</source> | |||
enfin le tout en une ligne, possible uniquement avec une définition faite par le mot-clé lambda | |||
<source lang="py"> | |||
B = map(lambda x: x**2,A) | B = map(lambda x: x**2,A) | ||
</source> | </source> | ||
=== passage d'arguments d'une fonction === | === passage d'arguments d'une fonction === |
Revision as of 22:48, 20 August 2015
Définir une fonction
Deux options suivant la complexité 1. définition usuelle: return permet que la fonction renvoie un résultat mais ce n'est pas obligatoire, la fonction peut simplement manipuler les données en entrée
def f(x):
return x**2
2. on peut également définir une fonction lambda ou 'fonction anonyme' selon
f = lambda x: x**2
dans l'exemple ci-dessus, le caractère anonyme n'est pas très clair car on lui a affecté la variable f pour l'utiliser avec f(x) comme précédemment le caractère anonyme apparaît lorsqu'on passe ce type de fonction en argument.
Appliquer une fonction à une liste
une suppose une fonction f() définie, par exemple
f = lambda x: x**2
A = range(10)# initialisation d'une liste
une première version lourde mais qui ressemble au C
B = [ 0.0 ]*len(A)
for i in range(len(A)):
B[i] = f(A[i])
une version similaire mais écrite en ligne
B = [ f(A[i]) for i in range(len(A)) ]
le même résultat en itérant directement sur les éléments de A
B = [ f(a) for a in A ]
en utilisant la fonction map du standard Python (générique)
B = map(f,A)
enfin le tout en une ligne, possible uniquement avec une définition faite par le mot-clé lambda
B = map(lambda x: x**2,A)