Renvoyer un résultat calculé
Objectif : Obtenir d’une fonction le total des dépenses pour le réutiliser ailleurs.
Quand une fonction affiche un total à l’écran, vous pouvez le lire, mais le programme ne peut pas facilement s’en servir pour un autre calcul. Pour afficher un récapitulatif, puis réutiliser le même montant dans une autre opération, demandez à la fonction de renvoyer son résultat. Vous allez modifier le traitement des dépenses pour que son sous-total soit disponible après l’appel.
Afficher n’est pas renvoyer
Jusqu’ici, afficher_depenses() parcourait la liste, affichait chaque dépense et présentait le sous-total. L’affichage sert à informer la personne qui lance le script ; il ne constitue pas, à lui seul, un résultat que vous pouvez affecter à une variable. Une fonction peut faire les deux : produire des lignes visibles et renvoyer une valeur calculée.
L’instruction return termine l’exécution de la fonction et transmet une valeur à l’endroit où celle-ci a été appelée. Dans cet exemple, la fonction renvoie le sous-total. Le code situé après l’appel peut alors stocker ce montant, l’afficher avec une devise ou le transmettre à un autre traitement.
Faire renvoyer le sous-total
Remplacez le contenu de suivi_depenses.py par le fichier complet ci-dessous. La liste conserve trois dépenses structurées. La fonction affiche les détails, calcule le sous-total, puis le renvoie ; c’est l’appelant qui choisit ensuite comment présenter ce résultat. Comme dans les leçons précédentes, la devise reste facultative et vaut € si vous ne la précisez pas.
depenses = [
{"montant": 12.50, "categorie": "Repas", "description": "Déjeuner"},
{"montant": 8.90, "categorie": "Transport", "description": "Bus"},
{"montant": 24.00, "categorie": "Courses", "description": "Épicerie"},
]
def afficher_depenses(liste_depenses, devise="€"):
sous_total = 0
for depense in liste_depenses:
montant = depense["montant"]
sous_total += montant
print(f"{montant:.2f} {devise} - {depense['categorie']} : {depense['description']}")
return sous_total
total_euros = afficher_depenses(depenses)
print(f"Sous-total réutilisable : {total_euros:.2f} €")
total_eur = afficher_depenses(depenses, "EUR")
print(f"Sous-total avec une autre devise : {total_eur:.2f} EUR")12.50 € - Repas : Déjeuner
8.90 € - Transport : Bus
24.00 € - Courses : Épicerie
Sous-total réutilisable : 45.40 €
12.50 EUR - Repas : Déjeuner
8.90 EUR - Transport : Bus
24.00 EUR - Courses : Épicerie
Sous-total avec une autre devise : 45.40 EURLes appels produisent d’abord les lignes détaillées, comme auparavant. Ensuite, afficher_depenses(depenses) renvoie 45.4 ; l’affectation à total_euros conserve cette valeur pour l’affichage qui suit. Le second appel utilise l’argument "EUR" et renvoie le même montant, car seule la devise affichée change : les données numériques restent identiques.
Suivre la valeur renvoyée
Dans le code, la valeur placée après return est bien sous_total, calculé à partir des montants de la liste. Lorsque l’exécution atteint cette instruction, la fonction se termine : ne placez donc pas d’affichage du total après le return en espérant qu’il s’exécute. Pour afficher le résultat, faites-le après l’appel, comme le script le fait avec une f-string.
Vous pouvez aussi appeler la fonction sans conserver sa valeur : les dépenses seront affichées, mais le sous-total renvoyé ne sera alors pas réutilisé par la suite. Dans le fichier proposé, chaque résultat est affecté à un nom distinct. Cela permet notamment de comparer les deux appels sans confondre le montant calculé et la manière de l’afficher.
Lancez le script depuis le terminal avec la commande Python disponible sur votre ordinateur, comme dans les premières leçons. Vérifiez que les trois dépenses s’affichent pour chaque appel et que les deux sous-totaux valent 45.40. Le format .2f règle la présentation à deux décimales ; la valeur renvoyée reste un nombre utilisable pour d’autres traitements.
À retenir
returntermine une fonction et renvoie une valeur à l’appelant.- L’affichage informe la personne qui exécute le programme ; la valeur de retour sert au programme.
- Affectez l’appel à une variable pour réutiliser le résultat plus tard.
- Vous pouvez afficher des détails dans la fonction et renvoyer séparément un total calculé.
Dans la leçon suivante, vous organiserez les différentes responsabilités du script autour de fonctions qui reçoivent et produisent des données.