Les fonctions sont des blocs de code réutilisables qui permettent de structurer vos programmes, réduire les répétitions et rendre votre code plus maintenable.
📑 Sommaire
🔧 Définir une fonction
Une fonction se définit avec le mot-clé def suivi du nom de la fonction et de parenthèses :
def dire_bonjour():
print("Bonjour !")
# Appel de la fonction
dire_bonjour()
📥 Passer des arguments
Les fonctions peuvent accepter des paramètres qui sont utilisés à l'intérieur du corps de la fonction :
def saluer(nom):
print(f"Salut {nom} !")
# Appel avec un argument
saluer("Guillaume") # Affiche : Salut Guillaume !
📤 Retourner une valeur
Les fonctions peuvent renvoyer des valeurs avec l'instruction return :
def addition(a, b):
return a + b
# Utilisation de la valeur retournée
resultat = addition(5, 3) # resultat vaut 8
print(resultat)
Une fonction peut retourner plusieurs valeurs :
def operation(a, b):
somme = a + b
produit = a * b
return somme, produit
s, p = operation(3, 4) # s vaut 7, p vaut 12
🧰 Paramètres par défaut
Vous pouvez spécifier des valeurs par défaut pour les paramètres :
def saluer(nom="ami"):
print(f"Bonjour {nom} !")
saluer() # Affiche : Bonjour ami !
saluer("Guillaume") # Affiche : Bonjour Guillaume !
📦 Arguments variables
Pour un nombre variable d'arguments, utilisez *args (tuple) et **kwargs (dictionnaire) :
# *args pour des arguments positionnels variables
def addition(*nombres):
return sum(nombres)
print(addition(1, 2, 3, 4)) # Affiche : 10
# **kwargs pour des arguments nommés variables
def profil(**donnees):
for cle, valeur in donnees.items():
print(f"{cle} : {valeur}")
profil(nom="Dupont", age=30, ville="Lyon")
🧠 Fonctions lambda
Les fonctions lambda sont des fonctions anonymes concises pour des opérations simples :
carre = lambda x: x * x
print(carre(5)) # Affiche : 25
# Utilisation avec les fonctions de tri
personnes = [("Alice", 25), ("Bob", 30), ("Charlie", 22)]
personnes_triees = sorted(personnes, key=lambda p: p[1]) # Tri par âge
🔄 Fonctions imbriquées
Vous pouvez définir des fonctions à l'intérieur d'autres fonctions :
def exterieure():
print("Fonction extérieure")
def interieure():
print("Fonction intérieure")
interieure() # Appel de la fonction intérieure
exterieure() # Affiche les deux messages
🎁 Bonus : Fonctions avancées
Décorateurs
Les décorateurs permettent de modifier le comportement des fonctions :
def mon_decorateur(fonction):
def wrapper():
print("Avant l'exécution")
fonction()
print("Après l'exécution")
return wrapper
@mon_decorateur
def dire_bonjour():
print("Bonjour !")
dire_bonjour()
Fonctions récursives
def factoriel(n):
if n <= 1:
return 1
else:
return n * factoriel(n-1)
print(factoriel(5)) # Affiche : 120
Type hints (Python 3.5+)
def calcul_moyenne(notes: list[float]) -> float:
"""Calcule la moyenne des notes."""
return sum(notes) / len(notes)
moyenne = calcul_moyenne([15.5, 17.0, 12.5])
print(moyenne)