Paramètres, retour et portée

La valeur de retour et la portée des variables

La valeur de retour et la portée des variables

Jusqu'ici, nos fonctions se contentaient d'afficher un résultat avec print. Mais souvent, on veut plutôt que la fonction renvoie une valeur, pour pouvoir la réutiliser ailleurs dans le programme. C'est le rôle du mot-clé return :

def addition(a, b):
    return a + b

resultat = addition(3, 5)
print(resultat)   # (affiche 8)

Contrairement à print, qui se contente d'afficher une valeur à l'écran sans la conserver, return renvoie la valeur à l'endroit où la fonction a été appelée, ce qui permet de la stocker dans une variable et de continuer à l'utiliser (dans un calcul, une comparaison...).

Erreur classique numéro 1 : oublier le return. Une fonction sans return renvoie toujours la valeur spéciale None, même si elle affiche quelque chose avec print :

def addition(a, b):
    print(a + b)   # (affiche le resultat mais ne le renvoie pas)

resultat = addition(3, 5)
print(resultat)   # (affiche None, pas 8 !)

Erreur classique numéro 2 : confondre print (afficher à l'écran, pour un humain) et return (renvoyer une valeur, pour le programme). Dès qu'une instruction return est exécutée, la fonction s'arrête immédiatement : le code écrit après n'est jamais exécuté.

Il faut aussi connaître la portée des variables : une variable créée à l'intérieur d'une fonction est locale — elle n'existe que pendant l'exécution de la fonction, et est inaccessible depuis l'extérieur. Une variable créée en dehors de toute fonction est globale — elle est visible partout dans le programme (sauf si une variable locale du même nom la masque localement).