Qu'est-ce que l'instruction return ?
L'instruction return permet à une fonction de renvoyer une valeur quand elle est appelée. Sans cette instruction, le résultat de la fonction reste à l'intérieur de celle-ci.
def saluer(nom): return f"Bonjour {nom} !" print(saluer("Patrick")) # Bonjour Patrick !
Comment récupérer la valeur renvoyée par une fonction ?
Patrick est parti faire ses courses et aimerais avoir le total de son panier. Ça tombe bien il a commencé à apprendre les fonctions en Python 😃.
def calculer_total(prix): return sum(prix) prix_patrick = [3.5, 2.0, 4.5] # On stocke la valeur renvoyée dans une variable total = calculer_total(prix_patrick) total_reduit = total * 0.9 print(total_reduit) # 9.0 # On utilise directement l'appel dans une expression print(calculer_total(prix_patrick) * 0.9) # 9.0 # On passe la valeur renvoyée à une autre fonction print(round(calculer_total(prix_patrick))) # 10 # On l'utilise dans une condition if calculer_total(prix_patrick) > 5: print("Livraison offerte !") # Livraison offerte !
Inscrivez-vous gratuitement pour modifier et exécuter du code Python directement dans votre navigateur.
calculer_total(prix_patrick) peut être utilisé partour comme on le ferait avec une valeur classique. Il est possible d'assigner le résultat à une variable si vous en avez besoin à plusieurs endroits. Si on n'assigne rien, le résultat sera perdu.
Quelle différence entre print et return ?
La question et la confusion la plus courante quand on débute (on y passe tous ☺️).
def afficher_total(prix): print(sum(prix)) prix_patrick = [3.5, 2.0, 4.5] total = afficher_total(prix_patrick) # 10.0 print(total) # None print(total * 0.9) # TypeError: unsupported operand type(s) for *: 'NoneType' and 'float'
Le total s'affiche bien dans le terminal mais il faut bien savoir pourquoi dans ce cas il s'affiche :
-
total = afficher_total(prix_patrick), à ce moment la fonction s'exécute, et comme la fonction contientprint(sum(prix)), elle va afficher le prix -
la fonction se termine sans
return, Python renvoie alorsNone, c'est ce qui est assigné à la variabletotal -
print(total)affiche le contenu de la variable, c'est-à-direNone -
total * 0.9revient à écrireNone * 0.9, ce qui explique laTypeError
Le 10.0 affiché vient donc du print() exécuté dans la fonction.
Que renvoie une fonction sans return ?
Nous venons de le voir à l'instant : une fonction sans return renvoie None. Un return seul aura le même effet, tout comme un return None.
def sans_return(): pass def return_seul(): return def return_none(): return None print(sans_return()) # None print(return_seul()) # None print(return_none()) # None
Inscrivez-vous gratuitement pour modifier et exécuter du code Python directement dans votre navigateur.