Les fonctions en Python
Objectifs pédagogiques
Qu’est-ce qu’une fonction ?
Exemple
Une fois la fonction définie, on peut l’appeler à tout moment dans le programme simplement en écrivant son nom suivi de parenthèses. C’est un moyen pratique de réutiliser du code sans le recopier plusieurs fois.
Structure d’une fonction
def nom_de_la_fonction(parametres):
# instructions
return valeur
Les différents éléments sont :
def: mot-clé qui indique la définition d’une fonction.nom_de_la_fonction: doit être explicite et en minuscules (ex.calcul_moyenne).parametres: valeurs passées à la fonction pour qu’elle puisse travailler.return: renvoie une valeur à celui qui appelle la fonction (facultatif).
Une fonction en Python est plus simple à écrire qu’en C ou C++ :
il n’est pas nécessaire d’indiquer le type de retour (comme int, void, float…), ni celui des paramètres.
Python détermine automatiquement le type des valeurs utilisées, ce qui rend le code plus concis et lisible.
De plus, les blocs ne sont pas délimités par des accolades { } comme en C/C++, mais par l’indentation, ce qui favorise une mise en forme claire et cohérente.
Le mot-clé return fonctionne de la même manière qu’en C : il permet de renvoyer une valeur et d’interrompre l’exécution de la fonction.
Si return est omis, la fonction renvoie implicitement None, équivalent d’un “rien” en Python.
Exemple avec paramètres - Bonjour personnalisé
Ici, le paramètre nom joue le même rôle qu’un argument de fonction en C/C++,
mais il n’a pas besoin d’être typé.
La valeur de retour
Une fonction peut renvoyer une valeur grâce au mot-clé return.
C’est ce qui permet à la fonction de produire un résultat que l’on peut réutiliser ailleurs dans le programme.
Comme en C ou C++, le mot-clé return interrompt l’exécution de la fonction et renvoie la valeur indiquée.
Cependant, la différence majeure avec le C/C++ est qu’il n’est pas nécessaire de préciser le type de retour : Python le déduit automatiquement.
Une même fonction peut donc renvoyer un entier, un flottant, une chaîne ou même une liste, selon le contexte.
Si aucune instruction return n’est utilisée, la fonction renvoie automatiquement None, équivalent à l’absence de valeur.
Exemple pratique - Calcul de l’aire d’un rectangle
Ici, la fonction calcule une valeur et la renvoie à l’endroit où elle a été appelée. Contrairement au C/C++, aucune variable temporaire ni déclaration de type n’est nécessaire : Python gère tout automatiquement, ce qui rend le code plus lisible et plus rapide à écrire.
Variables locales et globales
Exemple
Ici, deux variables différentes portent le même nom x, mais elles vivent dans des espaces mémoire distincts :
- celle définie dans la fonction est locale : elle n’existe que le temps de l’exécution de la fonction ;
- celle définie en dehors est globale : elle reste accessible partout, sauf si une variable locale du même nom la masque.
Ce concept s'appelle la portée des variables (scope en anglais).
Modifier une variable globale
Si tu veux modifier une variable globale à l’intérieur d’une fonction, il faut utiliser le mot-clé global :
Le mot-clé global indique à Python qu’on souhaite accéder à la variable existante définie à l’extérieur, et non en créer une nouvelle localement.
Bonnes pratiques pédagogiques
- Éviter les variables globales quand c’est possible.
Elles rendent le programme plus difficile à comprendre et à maintenir, car toute fonction peut les modifier.
Il vaut mieux transmettre les valeurs via les paramètres et récupérer les résultats avec
return. - Une fonction bien écrite doit être indépendante du reste du programme : elle reçoit ses données, fait son travail, et renvoie un résultat sans effets de bord.
Valeurs par défaut
Il est possible de donner une valeur par défaut à un paramètre. Ainsi, si l’appel de la fonction ne fournit pas d’argument, Python utilisera cette valeur automatiquement.
Cette fonctionnalité rend les fonctions plus souples et plus simples à utiliser, notamment pour gérer des cas optionnels. En C ou C++, il faut souvent surcharger la fonction (écrire plusieurs versions avec des signatures différentes) pour obtenir le même comportement. En Python, une seule définition suffit grâce aux paramètres par défaut.
Les valeurs par défaut peuvent être de n’importe quel type (nombre, chaîne, liste, etc.), et elles sont évaluées une seule fois lors de la définition de la fonction. Cela signifie qu’il faut éviter d’utiliser des objets modifiables (comme les listes) comme valeur par défaut, car ils seraient partagés entre plusieurs appels.
Fonctions avec plusieurs retours
Une fonction peut renvoyer plusieurs valeurs à la fois, sous forme de tuple. C’est une fonctionnalité très pratique de Python, qui permet de retourner plusieurs résultats sans avoir besoin d’utiliser des structures complexes ou des pointeurs, comme c’est le cas en C/C++. Cela rend le code à la fois plus lisible et plus pédagogique pour comprendre le passage et la manipulation de données entre les fonctions.
Ici, la fonction calculs() renvoie deux valeurs : la somme et le produit.
Python les regroupe automatiquement dans un tuple, puis les “dépaquette” lors de l’affectation :
(somme, produit) = (8, 15) → somme = 8, produit = 15.
Ce mécanisme est appelé dépaquetage (unpacking), et il peut être utilisé dans de nombreux contextes.
Exemple : fonction qui calcule plusieurs résultats
Ici, la fonction statistiques() retourne trois valeurs à la fois :
la moyenne, la note minimale et la note maximale.
L’intérêt est de conserver la cohérence des données : la fonction effectue tous les calculs, et le programme principal se contente de les récupérer.
Bonnes pratiques
-
Donner un nom explicite à la fonction. → Le nom doit indiquer clairement ce que fait la fonction (
calcul_moyenne,afficher_menu,verifier_mot_de_passe, etc.). En Python, on adopte la convention du snake_case (mots séparés par des underscores). Cela améliore la lisibilité du code, surtout pour les débutants. -
Éviter les fonctions trop longues : une fonction doit faire une seule chose. → Si une fonction commence à gérer plusieurs traitements, il vaut mieux la découper en sous-fonctions. Cela facilite le débogage, la réutilisation et la compréhension du programme.
-
Ajouter une docstring (chaîne entre triple guillemets) pour décrire son rôle. → La docstring sert de documentation interne : elle explique à quoi sert la fonction, ses paramètres et sa valeur de retour. C’est une habitude professionnelle essentielle, et elle est utilisée par les outils d’aide comme
help()ou les IDE.
Exemple - Documentation d’une fonction
Tu peux ensuite afficher cette documentation directement dans Python :
help(aire_triangle)
L'appel à help() affichera :
Help on function aire_triangle in module __main__:
aire_triangle(base, hauteur)
Calcule l'aire d'un triangle à partir de sa base et de sa hauteur.
Paramètres :
base (float) : longueur de la base du triangle.
hauteur (float) : hauteur correspondante.
Retourne :
float : aire du triangle calculée selon la formule (base * hauteur) / 2.
En Python, la docstring fait partie intégrante de l’objet fonction : elle est accessible pendant l’exécution, ce qui favorise une programmation auto-documentée — une excellente habitude à inculquer dès les débuts.