Accueil › Apprendre l’informatique › Leçon 6 sur 14

Débutant · 10 min de lecture · gratuit, sans compte

Les fonctions : découper un problème en morceaux réutilisables

Paramètres, valeur de retour, portée des variables : écris du code lisible, testable et que tu ne recopies jamais deux fois.

Objectifs de cette leçon
  • Définir et appeler une fonction
  • Différencier print et return
  • Comprendre la portée des variables

Une fonction = une mini-machine nommée

Une fonction regroupe des instructions sous un nom. Tu lui donnes des paramètres (entrées), elle te renvoie un résultat (sortie). C’est l’outil principal pour ne pas se répéter et pour découper un gros problème en petits problèmes simples.

def carre(x):
    return x * x

print(carre(5))     # 25
print(carre(1.5))   # 2.25

def salue(prenom, politesse="Bonjour"):
    return politesse + " " + prenom + " !"

print(salue("Léo"))
print(salue("Inès", "Salut"))

def définit la fonction ; rien ne s’exécute avant l’appel (carre(5)). Un paramètre peut avoir une valeur par défaut.

C’est LA confusion classique. print affiche une valeur pour l’humain. return renvoie une valeur au code qui a appelé la fonction, qui peut alors l’utiliser.

def double_print(x):
    print(x * 2)      # affiche, mais ne renvoie rien

def double_return(x):
    return x * 2      # renvoie le résultat

a = double_print(4)   # affiche 8
b = double_return(4)  # n'affiche rien
print(a)              # None : print ne renvoyait rien
print(b + 1)          # 9 : on peut réutiliser la valeur

Décomposer pour mieux régner

Problème : « calculer la moyenne des notes supérieures ou égales à 10 ». Au lieu d’un bloc géant, on écrit trois petites fonctions qui font chacune une chose :

def moyenne(valeurs):
    return sum(valeurs) / len(valeurs)

def garder_reussies(notes):
    return [n for n in notes if n >= 10]

def moyenne_reussies(notes):
    return moyenne(garder_reussies(notes))

print(moyenne_reussies([12, 8, 15, 9, 17, 11]))   # 13.75

Chaque fonction se teste séparément. Quand un bug apparaît, tu sais où chercher.

La portée des variables

Une variable créée dans une fonction n’existe que pendant cet appel : elle est locale. Cela évite que deux fonctions s’écrasent mutuellement leurs variables.

def compte():
    nombre = 10      # locale à la fonction
    return nombre

compte()
print(nombre)        # NameError : 'nombre' n'existe pas ici

Cette erreur est volontaire : lis le message, il te dit exactement ce qui ne va pas. Savoir lire un message d’erreur est une compétence essentielle.

Erreurs courantes

  • Définir sans appeler : def f(): … ne fait rien tant qu’on n’écrit pas f().
  • Oublier return : la fonction renvoie alors None.
  • Mettre du code après return : il n’est jamais exécuté, return termine la fonction.
  • Fonctions trop longues : si tu ne peux pas la résumer en une phrase, découpe-la.

Vérifie ce que tu as compris