💻maths

Fonctions en Python : Astuces pour Réussir en NSI

31 août 2026 7 min de lecture

Les fonctions en Python sont un pilier de la programmation, et en NSI, tu vas les rencontrer dès la Première et les approfondir en Terminale. Si tu as déjà vu def et que tu as l'impression que ça se complique, pas de panique ! Dans cet article, on va démystifier les fonctions avec des astuces simples et des exemples concrets. Tu vas comprendre comment les définir, les utiliser, et surtout éviter les pièges classiques. Prêt à devenir un as des fonctions ? C'est parti !

Qu'est-ce qu'une fonction en Python ?

Une fonction est un bloc de code réutilisable qui exécute une tâche précise. En Python, on la définit avec le mot-clé def, suivi d'un nom, de parenthèses (qui peuvent contenir des paramètres) et de deux points. Le corps de la fonction est indenté (décalé vers la droite). C'est cette indentation qui délimite ce qui appartient à la fonction.

def saluer():
    print("Bonjour !")

saluer()  # Affiche "Bonjour !"

Ici, saluer est une fonction sans paramètre qui affiche un message. Pour l'appeler, on écrit son nom suivi de parenthèses. C'est aussi simple que ça !

Pourquoi utiliser des fonctions ?

  • Réutilisabilité : tu écris le code une fois et tu l'utilises partout.
  • Lisibilité : un programme découpé en fonctions est plus facile à lire et à comprendre.
  • Maintenance : si tu dois corriger un bug, tu modifies une seule fois la fonction, pas tout le code.
  • Modularité : tu peux tester chaque fonction séparément, ce qui est super pour débugger.

Les paramètres : comment passer des données à une fonction ?

Les paramètres sont des variables locales qui reçoivent des valeurs lors de l'appel. Ils permettent de rendre la fonction flexible. Par exemple :

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

somme = addition(3, 5)
print(somme)  # Affiche 8

Ici, a et b sont des paramètres. Quand on appelle addition(3, 5), a vaut 3 et b vaut 5. La fonction calcule la somme et la renvoie avec return.

Paramètres par défaut et paramètres nommés

Tu peux donner des valeurs par défaut aux paramètres. Cela permet d'appeler la fonction sans fournir tous les arguments.

def saluer_personne(nom, salutation="Bonjour"):
    print(f"{salutation}, {nom} !")

saluer_personne("Alice")          # Affiche "Bonjour, Alice !"
saluer_personne("Bob", "Salut")   # Affiche "Salut, Bob !"

Les paramètres nommés, eux, permettent de passer les arguments dans un ordre différent en précisant le nom :

saluer_personne(nom="Charlie", salutation="Coucou")

Astuce : utilise toujours des noms de paramètres explicites pour que ton code soit clair.

La portée des variables : local vs global

Les variables définies à l'intérieur d'une fonction sont locales : elles n'existent que dans la fonction. En dehors, elles sont inconnues. Par exemple :

def ma_fonction():
    x = 10
    print(x)

ma_fonction()  # Affiche 10
print(x)       # Erreur : x n'est pas défini

À l'inverse, une variable globale est définie en dehors de toute fonction. Elle est accessible partout, mais attention : pour la modifier dans une fonction, il faut utiliser le mot-clé global (ce qui est souvent à éviter pour rester propre).

compteur = 0

def incrementer():
    global compteur
    compteur += 1

En NSI, on privilégie le passage par paramètres et le retour de valeur plutôt que les variables globales, car c'est plus sûr et plus lisible.

Le retour : que renvoie une fonction ?

La plupart des fonctions renvoient une valeur avec return. C'est ce qui permet de récupérer le résultat pour l'utiliser ailleurs. Si une fonction n'a pas de return, elle renvoie None (la valeur nulle de Python).

def carre(n):
    return n * n

print(carre(4))  # Affiche 16

Tu peux aussi retourner plusieurs valeurs en les séparant par des virgules (cela crée un tuple) :

def min_max(liste):
    return min(liste), max(liste)

plus_petit, plus_grand = min_max([3, 7, 2, 9])
print(plus_petit, plus_grand)  # Affiche 2 9

Astuce : si ta fonction a besoin de renvoyer plusieurs résultats, pense à retourner un tuple ou une liste, c'est très pratique.

Mise en pratique : un exemple complet

Imaginons que tu doives écrire un programme qui calcule la moyenne d'une liste de notes et affiche une appréciation. Avec des fonctions, c'est du gâteau !

def moyenne(notes):
    if len(notes) == 0:
        return 0
    return sum(notes) / len(notes)

def appreciation(moyenne):
    if moyenne >= 16:
        return "Excellent !"
    elif moyenne >= 12:
        return "Bien !"
    elif moyenne >= 10:
        return "Passable."
    else:
        return "Insuffisant."

notes = [12, 15, 9, 17]
ma_moyenne = moyenne(notes)
print(f"Moyenne : {ma_moyenne}")
print(appreciation(ma_moyenne))

Ce programme est clair, chaque fonction a un rôle précis. Tu peux tester chaque fonction séparément, ce qui facilite le débogage.

Les fonctions imbriquées et la récursivité

En Terminale, tu verras les fonctions récursives (qui s'appellent elles-mêmes). C'est un concept puissant pour résoudre des problèmes comme le calcul de la factorielle ou la suite de Fibonacci. Par exemple :

def factorielle(n):
    if n == 0:
        return 1
    else:
        return n * factorielle(n-1)

print(factorielle(5))  # Affiche 120

Attention : il faut toujours une condition d'arrêt pour éviter une boucle infinie. La récursivité est au programme de NSI, donc entraîne-toi !

Conseils de méthode pour réussir en NSI

Voici quelques astuces pour maîtriser les fonctions et réussir tes évaluations :

  • Nomme bien tes fonctions : utilise des verbes à l'impératif (calculer, afficher, lire) et des noms clairs.
  • Commente ton code : explique ce que fait chaque fonction, surtout si elle est complexe.
  • Teste au fur et à mesure : n'attends pas d'avoir tout écrit pour tester. Appelle ta fonction avec des exemples simples.
  • Évite les variables globales : privilégie les paramètres et le retour.
  • Révise les erreurs courantes : par exemple, oublier les parenthèses lors de l'appel, ou confondre paramètre et argument. Jette un œil à notre article sur les erreurs en Python pour éviter les pièges.

Pour t'entraîner, n'hésite pas à consulter nos exercices interactifs et les cours complets sur le site. Tu peux aussi trouver des ressources supplémentaires sur AlloBac et AlloLycée.

Se préparer au bac NSI

L'épreuve de NSI au bac (en Terminale) comprend une partie écrite et une partie pratique. Pour la pratique, tu devras écrire du code sur machine. Les fonctions sont souvent au cœur des exercices : on te demande de définir une fonction, de l'utiliser, de la modifier. Voici quelques conseils :

  • Relis le sujet et identifie les fonctions à créer.
  • Commence par écrire le squelette de la fonction (def ... :).
  • Implémente le corps en te concentrant sur les paramètres et le retour.
  • Teste avec des exemples simples sur papier, puis sur machine si tu as le temps.
  • Soigne la lisibilité : indentation correcte, noms explicites, commentaires.

En t'entraînant régulièrement avec des exercices variés, tu seras prêt le jour J. Et souviens-toi : chaque fonction que tu écris est une petite brique de ton programme. Plus tu les maîtrises, plus tu es à l'aise.

Conclusion

Les fonctions en Python sont un outil incontournable en NSI. Elles te permettent d'organiser ton code, de le rendre réutilisable et de résoudre des problèmes complexes. Avec les astuces que tu as vues ici (paramètres, retour, portée, récursivité), tu as toutes les clés pour réussir. N'aie pas peur de te tromper : c'est en testant, en débuggant et en réécrivant que tu progresseras. Continue à t'entraîner, explore les ressources du site, et tu verras, les fonctions n'auront plus de secrets pour toi. Allez, à toi de jouer !

📚 Pour aller plus loin

Questions fréquentes

Quelle est la différence entre un paramètre et un argument en Python ?

Un paramètre est une variable définie dans la définition de la fonction (entre les parenthèses après def). Un argument est la valeur que tu passes à la fonction lors de l'appel. Par exemple, dans def addition(a, b): ... , a et b sont des paramètres. Quand tu appelles addition(3, 5), 3 et 5 sont des arguments.

Comment retourner plusieurs valeurs dans une fonction Python ?

Tu peux retourner plusieurs valeurs en les séparant par des virgules dans l'instruction return. Python les regroupe alors dans un tuple. Par exemple : def min_max(liste): return min(liste), max(liste). Lors de l'appel, tu peux les dépaqueter : plus_petit, plus_grand = min_max([3, 7, 2]).

Pourquoi ma fonction affiche None alors que je m'attendais à une valeur ?

Cela se produit quand ta fonction n'a pas de return explicite, ou que le return est dans une branche qui n'est pas exécutée. Par défaut, une fonction Python renvoie None. Vérifie que chaque chemin d'exécution de ta fonction contient bien un return avec une valeur si tu attends un résultat.

Qu'est-ce que la portée d'une variable en Python ?

La portée d'une variable définit où elle est accessible. Une variable définie dans une fonction est locale : elle n'existe que dans cette fonction. Une variable définie en dehors de toute fonction est globale : elle est accessible partout. Pour modifier une variable globale dans une fonction, il faut utiliser le mot-clé global, mais c'est souvent déconseillé.

Comment éviter les erreurs courantes avec les fonctions en NSI ?

Les erreurs fréquentes sont : oublier les parenthèses lors de l'appel (ex: saluer au lieu de saluer()), oublier l'indentation après def, confondre paramètres et arguments, ou utiliser une variable globale sans la déclarer. Pour éviter ces pièges, relis ton code, teste avec des exemples simples, et consulte notre article sur les erreurs en Python : https://www.nsi-lycee.fr/python/erreurs

Qu'est-ce qu'une fonction récursive ?

Une fonction récursive est une fonction qui s'appelle elle-même dans son corps. Elle doit avoir une condition d'arrêt (cas de base) pour éviter une récursion infinie. Par exemple, la factorielle : def factorielle(n): if n == 0: return 1 else: return n * factorielle(n-1). C'est une notion abordée en Terminale NSI.

Bravo ! Tu as lu cet article
Inscris-toi pour sauvegarder ta progression et gagner des XP
Creer mon compte
fonctions Python NSIdef Python lyceeprogrammation PythonNSIfonctionsPython
Pixel