Retour au cours

fonctions : définition, return et valeurs de retour

dans cette leçon, vous allez apprendre à créer des fonctions pour organiser votre code, éviter les répétitions et rendre vos programmes plus faciles à lire et à maintenir.

objectifs

  • définir une fonction avec def nom(...):
  • renvoyer une valeur avec return
  • comprendre la différence entre exécuter et appeler une fonction
  • utiliser la portée locale pour les variables
  • appliquer de bonnes pratiques de nommage

pourquoi des fonctions ?

  • éviter la duplication de code
  • isoler des parties logiques pour mieux tester et réutiliser
  • améliorer la lisibilité et la maintenance

définir une fonction

def dire_bonjour():
    print("bonjour !")

appel :

dire_bonjour()

paramètres et arguments

def saluer(nom):
    print(f"bonjour {nom}")

appel avec argument :

saluer("ana")

plusieurs paramètres :

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

addition(2, 3)

return : renvoyer une valeur

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

resultat = somme(2, 3)
print(resultat)

return termine la fonction immédiatement.

sans return, la fonction renvoie None :

def rien():
    pass

print(rien())  # None

portée locale

les variables définies dans une fonction sont locales à celle-ci.

def foo():
    x = 10  # locale
    print(x)

foo()
# print(x) -> NameError

une fonction peut lire une variable globale, mais ne peut pas la modifier sans global (à éviter pour garder le code clair).

valeurs de retour multiples

python peut retourner plusieurs valeurs sous forme de tuple.

def stats(a, b):
    return a + b, a * b

somme, produit = stats(3, 4)

docstring et aide

def aire_rectangle(largeur, hauteur):
    """calcule l'aire d'un rectangle."""
    return largeur * hauteur

help(aire_rectangle)

bonnes pratiques

  • noms explicites (calcul_ttc, pas ct)
  • une fonction = une seule responsabilité
  • éviter les effets de bord imprévus (modifier une variable externe)
  • documenter avec une docstring claire

mini exemples exécutables

# aire d'un cercle
import math
def aire_cercle(rayon):
    """retourne l'aire d'un cercle de rayon r."""
    return math.pi * rayon ** 2

print(aire_cercle(2))
# formateur de message
def format_msg(nom, score):
    return f"{nom} a {score} points"

print(format_msg("alex", 42))
# min et max dans une liste
def min_max(seq):
    return min(seq), max(seq)

low, high = min_max([5, 1, 9])
print(low, high)

pièges courants

  • oublier d’appeler la fonction (print(foo) au lieu de print(foo()))
  • oublier return quand on veut renvoyer un résultat
  • réutiliser un nom de fonction comme variable
  • dépendre de variables globales

exercices

  1. carre(n) → renvoie le carré de n.
  2. hello(name) → retourne "bonjour <name>" (ne pas juste imprimer).
  3. perimetre_rectangle(l, h) → retourne le périmètre.
  4. convert_km_miles(km) → retourne la distance en miles (1 km = 0.621371 mi).
  5. split_amount(total, people) → retourne le montant par personne, gérer people = 0 en retournant None.