Écrivons enfin notre propre décorateur.
Rappelez-vous, un décorateur suralimente notre fonction.
C'est simplement une fonction qui enveloppe une autre fonction et l'améliore ou la modifie, mais la meilleure façon pour moi
d'expliquer ce que c'est est de coder la nôtre.
Alors faisons-le.
Définissons un my.
Décorateur et ce décorateur va accepter une fonction tout de suite, nous devons savoir qu'il s'agit
d'une fonction d'ordre supérieur maintenant ici.
À l'intérieur d'ici, nous allons appeler la fonction, mais avant cela, nous allons en fait envelopper cette fonction
dans une autre fonction.
Nous allons donc dire définir la fonction wrap.
Il ne s'agit donc que d'un wrapper et de cette fonction wrap.
Cela va être une fonction qui exécute simplement ce funk et qui finalement ne fera que retourner wrap.
Fonction et remarquez ici que je ne l'appelle pas, je le renvoie simplement pour que plus tard quelqu'un puisse
l'utiliser.
OK, disons maintenant que nous avons une fonction simple, bonjour, et cette fonction simple, juste prince.
Bonjour, quelle fonction inutile.
Maintenant, pourquoi est-ce utile, parce que maintenant je peux l'utiliser comme décorateur Python dès que nous écrivons un A devant cela va dire,
hé, cela va être un décorateur et le décorateur, tant que nous suivons
la syntaxe d'acceptation d'une fonction, d'avoir une fonction wrapper, d'appeler la fonction et de retourner la
fonction wrapper peut être utilisée.
Alors si je fais mon décorateur, voyez comme c'est tout bleu.
Maintenant, ce décorateur peut en fait être utilisé en haut lors de la définition de nos fonctions, donc si nous voulons utiliser
mon décorateur sur la fonction hello, nous l'utilisons comme ceci pour que lorsque j'appelle hello ensuite dans mon programme.
Je clique, cours.
Je reçois bonjour.
OK, je sais ce que tu penses, tu penses que c'est une perte de temps totale, Andre.
Pourquoi ai-je dû faire tout ça ?
J'aurais pu faire ça juste pour trouver le bonjour.
Et c'était tout.
Je suis tellement confus.
Eh bien, voici la chose.
Ce que nous venons de faire avec le décorateur.
N'a rien changé.
Cela fonctionne exactement comme prévu.
Mais ce que cela nous permet de faire, c'est que maintenant nous pouvons ajouter des fonctionnalités supplémentaires.
Rappelez-vous comment j'ai dit que le décorateur est une fonction comme mon décorateur qui enveloppe c'est ici une autre fonction, qui est la
fonction que nous passons.
Et l'améliore, alors comment pouvons-nous améliorer le bonjour ?
Eh bien, nous pouvons faire n'importe quoi à l'intérieur de cette fonction enveloppée, par exemple, je peux dire
imprimer, puis nous imprimerons simplement quelques étoiles ici et peut-être imprimer.
Une autre série d'étoiles ici pour que quand j'appelle Ron.
Boum, on vient de super booster notre bonjour.
Fonction.
À quel point cela est cool?
Et c'est pourquoi les décorateurs sont utiles en ajoutant simplement cette ligne, je suis capable de super booster une fonction, disons que
je crée une autre fonction appelée.
Par et cet achat va imprimer.
A plus.
En appelant par ici et en cliquant sur exécuter.
Bon, rien ne change, mais si je voulais le super booster, tout comme le bonjour, il me suffit
de copier le décorateur et de l'utiliser ici aussi pour que si je le lance.
Et voilà, on a super boosté notre.
C'est la puissance du décorateur en utilisant simplement cette syntaxe, je peux ajouter des fonctionnalités supplémentaires à d'autres
fonctions.
Maintenant, je sais ce que vous pensez et je sais que je n'arrête pas de le dire aussi, c'est comme si je pouvais lire dans les pensées,
mais.
Vous pensez que c'est beaucoup de magie, comment l'interpréteur Python fait-il tout cela ?
On dirait, eh bien, de la magie, n'est-ce pas ?
Sous le capot, tout ce qu'il fait bien, laissez-moi vous montrer, sur la base de ce que nous avons appris jusqu'à présent sur les
fonctions, car ce sont des citoyens de première classe, n'est-ce pas ?
Tout ce que nous faisons est littéralement ceci.
On dit la variable A.
Égal à bonjour.
Et emballer ce bonjour et l'appeler avec mon décorateur.
Alors je dis mon décorateur.
Et puis après ça, je cours comme ça.
Alors disons que c'était bonjour à bien, je ne fais que le lancer.
Ainsi.
Alors que si je lance ça.
Tout fonctionne encore.
Tout ce que je fais, c'est envelopper ma fonction hello.
Avec mon décorateur et en l'affectant à une variable.
Donc si on y va pas à pas, on voit que mon décorateur reçoit une fonction dans notre
cas la fonction hello, il renvoie alors cette fonction réencapsulée qui a hello ici.
Nous renvoyons donc cette fonction de rat.
Alors bonjour à maintenant est égal à cette fonction encapsulée, puis cette fonction encapsulée est appelée.
Et avec quoi ça s'appelle.
Eh bien, il l'imprime, puis exécute la fonction hello, puis l'imprime.
C'est la même chose que de faire quelque chose comme ça.
Nous l'appelons simplement à nouveau si je lance ceci.
Ça marche, ça a l'air étrange, n'est-ce pas, mais ça devrait avoir du sens.
Nous appelons la première fonction et la première fonction renvoie une autre fonction, puis nous appelons la fonction
renvoyée suivante, qui est la fonction rep.
Maintenant, la raison pour laquelle les décorateurs sont utiles est qu'au lieu de faire cela et, franchement, cela semble déroutant, je peux
simplement ajouter le à mon décorateur et nous n'avons pas besoin de faire tout cela.
Ah, bonjour.
Obtient automatiquement emballé par mon décorateur.
Mais c'est essentiellement ce que fait l'assigné.
Tu vois, rien de magique là-dedans.
Maintenant, en ce moment, c'est bien, mais je parie que vous vous demandez toujours pourquoi les décorateurs sont utiles.
Alors afin de vraiment finaliser notre compréhension du décorateur, faisons une pause et je vous retrouve dans la
prochaine vidéo.