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.

ExempleUn exemple simple...

1
def cube(w):
2
    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.

1
>>> b = cube(9)
2
>>> print(b)
3
729

Modifions à présent notre fonction précédente afin qu'elle renvoie une valeur, à l’occurrence la table de 8 :

ExempleAmélioration de la fonction table

1
def table(n) : 
2
    chaine = '' # initialisation de chaine à la chaîne vide 
3
    for k in range(1,11) :
4
        chaine+='{} x {} = {}'.format(n,k,n*k)+'\n' # on renvoie à la ligne après chaque calcul
5
    return chaine  # chaine sera l'image de n 
6
7
##  appels ##
8
print("J'appelle table(8)")
9
table(8)
10
print('_________________________')
11
print("J'affiche table(8)")
12
print(table(8))

Voici le retour du programme :

1
J'appelle table(8)
2
_________________________
3
8 x 1 = 8
4
8 x 2 = 16
5
8 x 3 = 24
6
8 x 4 = 32
7
8 x 5 = 40
8
8 x 6 = 48
9
8 x 7 = 56
10
8 x 8 = 64
11
8 x 9 = 72
12
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)).

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