Python: Fonctions: Difference between revisions

From Wiki Cours
Jump to navigation Jump to search
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é
Deux options suivant la complexité
Line 16: Line 16:
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.
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
une suppose une fonction f() définie, par exemple
Line 46: Line 46:
</source>
</source>


=== passage d'arguments d'une fonction ===
== passage d'arguments d'une fonction ==

Revision as of 22:50, 20 August 2015

<--Sommaire

Définir une fonction

Deux options suivant la complexité

1. définition usuelle à l'aide du mot-clé def et ouverture d'un bloc. 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