Aller au contenu principal

3 formations sont désormais disponibles : Python, Flask et JS.

Aller au contenu principal

Tu as déjà vu @app.route dans Flask ou @classmethod. C'est quoi ce @ ?

Un décorateur est une fonction qui prend une fonction en entrée, et renvoie une nouvelle fonction modifiée. C'est comme un emballage cadeau autour de ton code.

Exemple : Mesurer le temps d'exécution

import time

def chronometre(fonction):
    def wrapper():
        debut = time.time()
        fonction() # On exécute la vraie fonction
        fin = time.time()
        print(f"La fonction a mis {fin - debut} secondes.")
    return wrapper

@chronometre
def fonction_lente():
    time.sleep(1)
    print("Fini !")

fonction_lente()
# Affiche :
# Fini !
# La fonction a mis 1.00... secondes.

C'est ultra puissant pour ajouter du logging, de l'authentification, ou du cache sans toucher au code de la fonction originale.