1.4Fonctions, arguments & portée
Une fonction est un bloc de code nommé et réutilisable : on l'écrit une fois, on l'appelle autant qu'on veut. C'est le pilier d'un code organisé qui applique le principe DRY (« Don't Repeat Yourself » — ne vous répétez pas). Vous apprenez à définir des fonctions avec def, à leur passer des arguments et à récupérer un résultat avec return.
Vous découvrez aussi la portée des variables (locale vs globale) et la flexibilité des arguments : valeurs par défaut, *args et **kwargs. Ces notions structurent tous vos programmes futurs et préparent la programmation orientée objet du niveau 2.
Vocabulaire de la section
- Fonction / def
- Bloc de code nommé et réutilisable, défini avec def nom(paramètres):. Appelé par nom(arguments).
- Paramètre / argument
- Le paramètre est la variable déclarée dans la définition ; l'argument est la valeur réelle passée à l'appel.
- return
- Renvoie une valeur en sortie de la fonction et met fin à son exécution. Sans return, la fonction renvoie None.
- Portée (scope)
- Zone de visibilité d'une variable. Une variable créée dans une fonction est locale : elle n'existe pas à l'extérieur.
- *args / **kwargs
- Permettent de recevoir un nombre variable d'arguments : *args (liste de valeurs), **kwargs (dictionnaire de paires nom=valeur).
Quand privilégier une boucle for plutôt que while ?
En pratique — Définir et appeler des fonctions
- Écrivez une fonction saluer(nom) qui renvoie (return) « Bonjour, {nom} ! ». Appelez-la avec différents noms et affichez le résultat.
- Ajoutez un paramètre par défaut : saluer(nom, politesse="Bonjour"). Appelez-la avec et sans le second argument.
- Écrivez une fonction moyenne(*notes) qui accepte un nombre variable de notes et renvoie leur moyenne. Testez avec 2, puis 5 notes.
- Illustrez la portée : créez une variable dans une fonction et tentez d'y accéder à l'extérieur (NameError). Concluez sur local vs global.
Points clés à retenir
- Une fonction (def) regroupe un code réutilisable : principe DRY.
- return renvoie un résultat ; sans lui, la fonction renvoie None.
- Arguments par défaut, *args et **kwargs offrent de la flexibilité.
- Une variable définie dans une fonction est locale : invisible à l'extérieur.
Questions fréquentes
Quelle différence entre print() et return dans une fonction ?
print() affiche à l'écran mais ne transmet rien au reste du programme. return renvoie une valeur exploitable (stockable, calculable). Une fonction qui « print » sans « return » ne sert qu'à afficher ; pour réutiliser le résultat, il faut return.
À quoi servent *args et **kwargs concrètement ?
Ils rendent une fonction flexible sur le nombre d'arguments. *args collecte des valeurs positionnelles en tuple (utile pour une somme d'un nombre inconnu de valeurs) ; **kwargs collecte des paires clé=valeur en dictionnaire (utile pour des options nommées).