Python: Fonctions: Difference between revisions

From Wiki Cours
Jump to navigation Jump to search
No edit summary
No edit summary
Line 1: Line 1:
__NOTOC__
__NOTOC__
[[Memento_Python|<--Sommaire]]
[[Memento_Python|<--Sommaire]]
=== définir une fonction ===
=== 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">
#définition d'une fonction: deux options suivant la complexité
# 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):
def f(x):
     return x**2
     return x**2
 
</source>
# on peut également définir une fonction lambda ou fonction anonyme selon
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
# 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 une fonction en argument.
</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 ===
=== Appliquer une fonction à une liste ===


une suppose une fonction f() définie, par exemple
<source lang="py">
<source lang="py">
# une suppose une fonction f() définie, par exemple
f = lambda x: x**2
f = lambda x: x**2
# initialisation d'une liste
A = range(10)# initialisation d'une liste
A = range(10)
</source>
# une première version lourde mais qui ressemble au C
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])
# une version similaire mais écrite en ligne
</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)) ]
# le même résultat en itérant directement sur les éléments de 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 ]
# en utilisant la fonction map du standard Python (générique)
</source>
en utilisant la fonction map du standard Python (générique)
<source lang="py">
B = map(f,A)
B = map(f,A)
# enfin le tout en une ligne, possible uniquement avec une définition
</source>
# faite par le mot-clé lambda
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

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

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)

passage d'arguments d'une fonction