Livre_silo 30 août 2013 16:32 Page 115
¨
©
¨
©
¨
©
¨
©
C o p y r i g h t E y r o l l e s
115
5 – Fonctions
5.1 La notion de fonction
Une fonction est une suite d’instructions qui dépend de paramètres. Ainsi, dans l’exemple
précédent, on peut définir une fonction appelée annoncer_train et paramétrée par une destination d et un horaire h de la façon suivante :
def annoncer_train(d, h):
print("Le train en direction de", d, "partira à", h)
print("---------------------------------------------------------")
Comme on le voit sur cet exemple, une fonction est introduite par le mot-clé def, suivi du
nom de la fonction, de ses paramètres entre parenthèses, de deux-points, puis d’un bloc
d’instructions. Ce dernier s’appelle le corps de la fonction. Il doit donc être indenté et la
fin de ce bloc marque la fin de la définition de fonction. Les variables d et h, qui figurent
comme paramètres dans la définition de la fonction, s’appellent les arguments formels.
En utilisant la fonction annoncer_train, le programme se réduit alors aux trois instructions
suivantes :
annoncer_train("Brest", "9h")
annoncer_train("Strasbourg", "9h30")
annoncer_train("Toulouse", "9h45")
Chaque instruction annoncer_train(...) est un appel à la fonction. Dans l’appel
annoncer_train("Brest", "9h"), les expressions "Brest" et "9h", que l’on donne en arguments,
s’appellent les arguments effectifs de l’appel.
Organiser un programme à l’aide de fonctions évite les redondances. En outre, cela les
rend plus clairs et plus faciles à lire : pour comprendre le programme précédent, il n’est pas
nécessaire de savoir comment la fonction annoncer_train est programmée, il suffit de savoir
ce qu’ elle fait. Enfin, cela permet d’organiser l’écriture du programme. On peut décider
d’écrire la fonction un jour et le programme principal le lendemain. On peut aussi organiser
une équipe de manière à ce qu’un programmeur écrive la fonction et un autre le programme
principal.
Ce mécanisme peut se comparer à celui des définitions du langage mathématique qui permet d’utiliser le mot « groupe » au lieu de répéter la locution « ensemble muni d’une loi
interne, associative, ayant un élément neutre, dans lequel tout élément a un symétrique ».
Pour poursuivre la comparaison, le langage mathématique utilise aussi de telles définitions
paramétrées : « Une fonction de classe C
n est... », « Un K-espace vectoriel est... », etc.
5.1.1 Le retour de valeur
Certaines fonctions sont capables d’effectuer un calcul, et non pas seulement un affichage
comme dans annoncer_train. Par exemple, on peut souhaiter écrire une fonction hypotenuse,
avec deux paramètres x et y, pour calculer
√
x 2 + y 2 . En Python, on la définit de la
manière suivante :
¨
©
¨
©
¨
©
¨
©
C o p y r i g h t E y r o l l e s
115
5 – Fonctions
5.1 La notion de fonction
Une fonction est une suite d’instructions qui dépend de paramètres. Ainsi, dans l’exemple
précédent, on peut définir une fonction appelée annoncer_train et paramétrée par une destination d et un horaire h de la façon suivante :
def annoncer_train(d, h):
print("Le train en direction de", d, "partira à", h)
print("---------------------------------------------------------")
Comme on le voit sur cet exemple, une fonction est introduite par le mot-clé def, suivi du
nom de la fonction, de ses paramètres entre parenthèses, de deux-points, puis d’un bloc
d’instructions. Ce dernier s’appelle le corps de la fonction. Il doit donc être indenté et la
fin de ce bloc marque la fin de la définition de fonction. Les variables d et h, qui figurent
comme paramètres dans la définition de la fonction, s’appellent les arguments formels.
En utilisant la fonction annoncer_train, le programme se réduit alors aux trois instructions
suivantes :
annoncer_train("Brest", "9h")
annoncer_train("Strasbourg", "9h30")
annoncer_train("Toulouse", "9h45")
Chaque instruction annoncer_train(...) est un appel à la fonction. Dans l’appel
annoncer_train("Brest", "9h"), les expressions "Brest" et "9h", que l’on donne en arguments,
s’appellent les arguments effectifs de l’appel.
Organiser un programme à l’aide de fonctions évite les redondances. En outre, cela les
rend plus clairs et plus faciles à lire : pour comprendre le programme précédent, il n’est pas
nécessaire de savoir comment la fonction annoncer_train est programmée, il suffit de savoir
ce qu’ elle fait. Enfin, cela permet d’organiser l’écriture du programme. On peut décider
d’écrire la fonction un jour et le programme principal le lendemain. On peut aussi organiser
une équipe de manière à ce qu’un programmeur écrive la fonction et un autre le programme
principal.
Ce mécanisme peut se comparer à celui des définitions du langage mathématique qui permet d’utiliser le mot « groupe » au lieu de répéter la locution « ensemble muni d’une loi
interne, associative, ayant un élément neutre, dans lequel tout élément a un symétrique ».
Pour poursuivre la comparaison, le langage mathématique utilise aussi de telles définitions
paramétrées : « Une fonction de classe C
n est... », « Un K-espace vectoriel est... », etc.
5.1.1 Le retour de valeur
Certaines fonctions sont capables d’effectuer un calcul, et non pas seulement un affichage
comme dans annoncer_train. Par exemple, on peut souhaiter écrire une fonction hypotenuse,
avec deux paramètres x et y, pour calculer
√
x 2 + y 2 . En Python, on la définit de la
manière suivante :
