Objectifs
- Définir une fonction avec
defet l'appeler. - Distinguer paramètres (définition) et arguments (appel).
- Utiliser
returnpour renvoyer un résultat. - Expliquer la différence entre variable locale et variable globale.
- Rédiger une docstring courte pour documenter une fonction.
Idée clé
Une fonction est une boîte noire réutilisable : on lui donne des entrées (arguments), elle calcule, puis renvoie un résultat. Cela évite de copier-coller du code et clarifie le rôle de chaque partie du programme.
Définir et appeler
def aire_rectangle(longueur: float, largeur: float) -> float:
"""Calcule l'aire d'un rectangle."""
return longueur * largeur
a = aire_rectangle(5, 3) # a vaut 15.0
print(a)
| Mot | Rôle |
|---|---|
| Paramètre | Nom dans la définition (longueur, largeur) |
| Argument | Valeur fournie à l'appel (5, 3) |
return | Renvoie le résultat à l'appelant |
Sans return, la fonction renvoie None.
`print` n'est pas `return`
print affiche à l'écran. return transmet une valeur utilisable ensuite (x = ma_fonction()). Les deux rôles sont différents.
Portée des variables
- Locale : créée dans la fonction, invisible à l'extérieur.
- Globale : créée hors de toute fonction ; lisible partout, mais à modifier avec prudence.
compteur = 0 # globale
def incrementer():
global compteur
compteur = compteur + 1
incrementer()
print(compteur) # 1
En Première, on préfère passer des paramètres et retourner un résultat plutôt que d'abuser de global.
Bonnes pratiques
- Un nom qui décrit l'action :
calculer_moyenne, pasf. - Une fonction = une responsabilité claire.
- Une docstring en début de corps pour expliquer le rôle.
def est_pair(n: int) -> bool:
"""Renvoie True si n est pair, False sinon."""
return n % 2 == 0
Piège fréquent
- Oublier les parenthèses à l'appel :
aire_rectangle(la fonction elle-même) ≠aire_rectangle(2, 3)(le résultat). - Croire qu'une variable locale modifie automatiquement la globale du même nom — sans
globalou sansreturn, non.
À retenir
def nom(...):définit ;nom(...)appelle.- Paramètres ≠ arguments.
returnfournit le résultat ; sansreturn→None.- Variables locales limitées au corps de la fonction.
- Préférer paramètres +
returnàglobal. - Docstring + nom explicite = code plus lisible.