Exercices Fonctions & Modules Decorateur de log
🎉

Bravo!

Intermédiaire 🧠 Fondamentaux 20 XP 0 personnes ont réussi

Decorateur de log

Le logging est essentiel en production : savoir quelle fonction a été appelée, avec quels arguments, et quand. Un décorateur de log automatise ça sans toucher au code des fonctions existantes. C'est exactement comme ça que fonctionnent les décorateurs de Django (@login_required) et Flask (@app.route).

Le principe : ta fonction logger prend une fonction en paramètre, crée un wrapper qui enregistre l'appel puis exécute la fonction originale, et retourne ce wrapper.

Écris un décorateur logger qui enregistre les appels dans une liste logger.appels. Chaque entrée est un dict avec les clés fonction (nom), args (tuple) et kwargs (dict). Le décorateur ne modifie pas le résultat de la fonction décorée.

Exemple :
logger.appels = []
@logger
def add(a, b): return a + b
add(1, 2)
logger.appels donne [{'fonction': 'add', 'args': (1, 2), 'kwargs': {}}]

Tests (2/4)

Log un appel
logger.appels = []
@logger
def additionner(a, b):
    return a + b
additionner(1, 2)
assert len(logger.appels) == 1
assert logger.appels[0]['fonction'] == 'additionner'
assert logger.appels[0]['args'] == (1, 2)
Retour preserve
logger.appels = []
@logger
def doubler(x):
    return x * 2
assert doubler(5) == 10

+ 0 tests cachés

Indices (3 disponibles)

solution.py