Exercices Fonctions & Modules Créer un decorateur simple
🎉

Bravo!

Avancé 🧠 Fondamentaux 30 XP 0 personnes ont réussi

Créer un decorateur simple

Un decorateur en Python, c'est une higher-order function qui prend une fonction en argument et renvoie une nouvelle fonction enrichie. C'est la combinaison parfaite de tout ce qu'on a vu : higher-order functions, closures et fonctions qui renvoient des fonctions.

Le principe : tu enveloppes une fonction existante dans une autre pour ajouter un comportement avant ou apres son execution, sans modifier la fonction originale.

def avec_log(func):
def wrapper(*args):
print('Appel de', func.__name__)
résultat = func(*args)
print('Résultat :', résultat)
return résultat
return wrapper

@avec_log
def additionner(a, b):
return a + b

additionner(3, 4) # affiche les logs ET renvoie 7

La syntaxe *args permet d'accepter n'importe quel nombre d'arguments.

Écris un decorateur doubler_resultat(func) qui prend une fonction renvoyant un nombre et renvoie une nouvelle fonction qui fait la meme chose mais multiplie le résultat par 2.

Exemple :
@doubler_resultat
def ajouter(a, b):
return a + b

ajouter(3, 4) renvoie 14 (car 7 * 2 = 14)

Tests (3/4)

Doubler addition
@doubler_resultat
def add(a, b): return a + b
assert add(3, 4) == 14
Doubler carre
@doubler_resultat
def carre(x): return x ** 2
assert carre(5) == 50
Doubler zero
@doubler_resultat
def zero(): return 0
assert zero() == 0

+ 0 tests cachés

Indices (3 disponibles)

solution.py