Une vraie fonction !
Pour les puristes, les fonctions que nous avons décrites jusqu'à présent ne sont pas tout à fait des fonctions au sens strict, mais plus exactement des procédures.
Une « vraie » fonction (au sens strict) doit en effet renvoyer une valeur lorsqu'elle se termine.
Une « vraie » fonction peut s'utiliser à la droite du signe égale dans des expressions telles que y = sin(a). On comprend aisément que dans cette expression, la fonction sin( )
renvoie une valeur (le sinus de l'argument a) qui est directement affectée à la variable y.
Exemple : Un exemple simple...
def cube(w):
return w*w*w
L'instruction return définit ce que doit être la valeur renvoyée par la fonction. En l'occurrence, il s'agit du cube de l'argument qui a été transmis lors de l'appel de la fonction.
>>> b = cube(9)
>>> print(b)
729
Modifions à présent notre fonction précédente afin qu'elle renvoie une valeur, à l’occurrence la table de 8 :
Exemple : Amélioration de la fonction table
def table(n) :
chaine = '' # initialisation de chaine à la chaîne vide
for k in range(1,11) :
chaine += f'{n} x {k} = {n*k}' + '\n' # on renvoie à la ligne après chaque calcul
return chaine # chaine sera l'image de n
## appels ##
print("J'appelle table(8)")
table(8)
print('_________________________')
print("J'affiche table(8)")
print(table(8))
Voici le retour du programme :
J'appelle table(8)
_________________________
8 x 1 = 8
8 x 2 = 16
8 x 3 = 24
8 x 4 = 32
8 x 5 = 40
8 x 6 = 48
8 x 7 = 56
8 x 8 = 64
8 x 9 = 72
8 x 10 = 80
On remarque que l'instruction table(8)
ne retourne aucun résultat ; en effet, à l'appel de la fonction par l'instruction table(8)
, la fonction table( )
est exécutée avec la valeur 8 pour le paramètre n
. Une chaîne de caractères correspondant à la table du 8 est donc calculée par la machine. Mais comme nous demandons seulement que cette chaîne soit calculée et pas qu'elle soit affichée, on ne voit rien à l'écran.
Si on veut afficher le résultat, on est obligé d'utiliser l'instruction print(table(8))
.
Fondamental : Le rôle de découpe en unités logiques
Un rôle important des fonctions est de découper votre programme en "petites unités logiques" faciles à comprendre. L'usage des fonctions, par ce rôle, facilite la conception d'un programme mais aussi sa relecture, sa réutilisation, les corrections...
Ce sera l'idée du prochain projet !