Livre_silo 30 août 2013 16:32 Page 116
¨
©
¨
©
¨
©
¨
©
C o p y r i g h t E y r o l l e s
116
Informatique pour tous
def hypotenuse(x, y):
z = math.sqrt(x*x + y*y)
return z
On l’utilise, par exemple pour calculer
√
3 2 + 4 2 , de la manière suivante :
In [1]: hypotenuse(3.0, 4.0)
Out[1]: 5.0
Dans cette instruction, l’appel hypotenuse(3.0, 4.0) transmet les arguments effectifs 3.0
et 4.0 à la fonction, en lieu et place des arguments formels x et y. La fonction hypotenuse
calcule alors la valeur math.sqrt(x*x + y*y) et la renvoie. En Python, ce retour de valeur
est effectué par l’instruction return. C’est le processus inverse du passage d’arguments, qui
transmet des informations du programme principal vers le corps de la fonction. L’appel à
la fonction hypotenuse constitue alors une expression, dont la valeur est la valeur renvoyée,
à savoir 5.0. Celle-ci est affichée par l’instruction print.
Si on oublie de faire précéder l’expression renvoyée par le mot-clé return, comme dans la
fonction hypotenuse suivante :
def hypotenuse(x, y):
math.sqrt(x*x + y*y)
celle-ci est toujours acceptée, mais elle ne renvoie pas de valeur. Ainsi, si on affiche le
résultat du calcul de cette fonction
In [2]: hypotenuse(3.0, 4.0)
Out[2]: None
on obtient, non pas la valeur attendue 5.0, mais une valeur particulière None. De manière
générale, l’absence d’instruction return dans une fonction se traduit par une instruction
implicite return None. C’était en particulier le cas pour la fonction annoncer_train précédente.
Par opposition aux fonctions qui renvoient des valeurs, on pourra en général considérer
l’appel à une fonction sans return (ou qui renvoie None) comme une instruction. On verra
cependant dans la prochaine section que certaines fonctions sont à la fois des expressions
et des instructions.
ATTENTION Ne pas confondre return et print
Il arrive que l’on confonde ces deux intructions à cause de l’interpréteur interactif, qui affiche la valeur renvoyée par f lorsqu’on y saisit f(...). Leurs rôles sont en réalité totalement
différents :
• L’instruction print n’a pas de valeur, elle a pour seul effet d’afficher un texte à l’écran.
• L’instruction return, au contraire, n’affiche rien mais décide de ce que renvoie la fonction,
et donc de la valeur de l’appel f(...).
Ainsi, si on commet l’erreur d’utiliser print à la place de return dans une fonction, celle-ci
affichera la valeur calculée à l’écran mais ne la renverra pas (elle renverra None comme on
l’a vu plus haut).
¯
Précédent

- 129/402

Suivant