Bien que j'aime à penser que je suis un codeur Python raisonnablement compétent, les décorateurs sont un aspect du langage que je n'ai jamais réussi à maîtriser.
Je sais ce qu'ils sont (superficiellement), j'ai lu des tutoriels, des exemples, des questions sur Stack Overflow, et je comprends la syntaxe, je peux écrire les miens, utiliser occasionnellement @classmethod et @staticmethod, mais il ne m'est jamais venu à l'esprit d'utiliser un décorateur pour résoudre un problème dans mon propre code Python. Je ne rencontre jamais un problème où je me dis : "Hmm... ça ressemble à un travail pour un décorateur !".
Je me demandais donc si vous pouviez me donner des exemples d'utilisation de décorateurs dans vos propres programmes, et j'espère que j'aurai un moment "A-ha ! obtenir les.
6 votes
Les décorateurs sont également utiles pour la mémorisation, c'est-à-dire la mise en cache du résultat d'une fonction dont le calcul est lent. Le décorateur peut renvoyer une fonction qui vérifie les entrées et, si elles ont déjà été présentées, renvoie un résultat mis en cache.
1 votes
Notez que Python dispose d'un décorateur intégré,
functools.lru_cache
qui fait exactement ce que Peter a dit, depuis Python 3.2, publié en février 2011.0 votes
Le contenu de la Bibliothèque de décorateurs Python devrait vous donner une bonne idée de leurs autres utilisations.