🐍 Python : Fonctions

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)
🏠 Retour au sommaire général