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 !
