Décorateurs à Python

Décorateurs à Python
Les décorateurs de Python sont une caractéristique extrêmement utile car ils permettent aux programmeurs de personnaliser comment une méthode ou une classe se comporte. Les décorateurs nous permettent d'encapsuler une autre fonction pour modifier temporairement sa fonctionnalité tout en étendant la fonctionnalité de la méthode enveloppée. Comprenons d'abord quelques concepts qui seraient utiles tout en apprenant les décorateurs avant d'y entrer trop profondément.

Quand utiliser un décorateur python

Chaque fois que vous souhaitez modifier le comportement d'une fonction sans modifier la méthode elle-même, vous utiliserez un décorateur. L'ajout de journaux, l'analyse des performances, l'exécution de la mise en cache, la confirmation de l'autorisation et d'autres tâches sont quelques exemples notables. Chaque fois que vous avez besoin d'exécuter un code identique sur de nombreux processus, vous pouvez cependant en utiliser un. Vous n'aurez pas à écrire les programmes en double.

Prérequis pour comprendre les décorateurs

Nous devons comprendre d'abord quelques concepts Python fondamentaux avant de découvrir les décorateurs.

    • Les fonctions peuvent être utilisées ou fournies comme paramètres dans Python car ils se comportent comme des classes et des objets.
    • Un élément du type d'objet est une fonction.
    • La fonction pourrait être conservée dans une variable.
    • La fonction est utilisée comme argument dans une autre fonction.
    • Les utilisateurs peuvent renvoyer une autre méthode à partir d'une fonction.
    • Ils pourraient être conservés dans des structures de données comme les tableaux et les tables de hachage.

Pour une bonne compréhension, considérez les cas suivants:

Exemple 1:

Nous traiterons les fonctions comme des objets dans ce cas. Nous allons donner une variable à la méthode de cri. Cela génère un deuxième nom, criez qui pointe vers l'objet de fonction qui est spécifié par la méthode Shout mais n'appelle pas la fonction.


Au début du programme, nous définissons la fonction Shout (). Ici, nous passons l'attribut «T» comme paramètre de la fonction Shout (). Cette fonction renvoie le texte au format supérieur. Nous utilisons la fonction supérieure (). Ensuite, nous appelons la méthode print () pour afficher la ligne. Dans cette fonction, nous appelons la fonction Shout (). Nous fournissons le texte que nous voulons apparaître à l'écran comme sortie. Nous définissons la valeur de la fonction Shout () égale à la fonction yell (). Dans la dernière ligne, nous imprimons la valeur de la méthode Yell afin que nous appliquons la méthode print (). Ici, nous spécifions également la valeur «bonjour» comme argument de la fonction yell ().

Exemple 2:

Nous fournirons la méthode à une autre fonction en tant que paramètre. Ici, la méthode de salut accepte une deuxième fonction comme un argument (Shout and Whisper). La fonction de salut appelle ensuite d'autres fonctions définies qui ont été spécifiées comme une entrée.


La fonction Shout () est définie au début du programme. Ici, l'argument pour la fonction de shout est l'élément «t». Cela rend le texte dans le haut du boîtier car nous avons utilisé la fonction supérieure (). La méthode Whisper () est définie à l'étape suivante. Cette fonction sort le texte qui a été passé comme argument dans le format inférieur. La méthode Greet () est maintenant utilisée. Ici, nous fournissons le paramètre «func» qui est défini dans la ligne suivante. Nous spécifions la valeur de l'attribut «func» que nous devons représenter sur la console. Enfin, nous utilisons la fonction print () pour montrer les valeurs des méthodes de shout et de chuchotement.


Les cas qui sont mentionnés précédemment montrent les principaux concepts nécessaires pour comprendre les décorateurs. Maintenant, nous allons exécuter quelques instances pour démontrer l'utilisation des décorateurs.

Décorateurs

Comme on l'a déjà dit, les décorateurs peuvent être utilisés pour modifier une fonction ou un comportement de classe. Les fonctions sont définies dans la fonction de wrapper lors de l'utilisation de décorateurs, où ils sont passés comme paramètres à d'autres fonctions.

Exemple 3:

Cette illustration peut illustrer comment un décorateur modifie le comportement d'une fonction.


Tout d'abord, nous définissons le décorateur. Ensuite, nous appelons la fonction inner1 (). C'est une méthode wrapper dans laquelle le paramètre est appelé. Dans cette fonction, nous utilisons la fonction print (). Ensuite, nous appelons la fonction réelle à l'intérieur de la fonction wrapper. Nous utilisons à nouveau la méthode print ().dans la ligne suivante. Nous définissons une méthode fun_used () à appeler à l'intérieur de l'emballage. Maintenant, nous passons le «Fun_used» dans le décorateur pour modifier son comportement. Pour résilier le code, nous invoquons la méthode.

Exemple 4:

Passons à une autre instance dans laquelle nous pouvons déterminer la durée d'une fonction pour exécuter en utilisant un décorateur.


Ici, nous importons les fichiers d'en-tête requis qui incluent le temps et les mathématiques. La bibliothèque «Time» est responsable du calcul du module «temps» et le module «mathématiques» est responsable de toutes les opérations mathématiques. Nous utilisons un décorateur pour calculer la durée prise par la fonction. Nous définissons la méthode cal_time (). Cette fonction contient toute fonction requise en tant que paramètre. Nous utilisons la fonction inner1 (). Nous fournissons les * args et ** kwargs comme arguments de la fonction. Dans l'étape suivante, nous stockons la durée avant d'implémenter la fonction. Nous appelons la méthode Time () associée au module «Time». Ensuite, nous acquérons l'heure après l'exécution de la méthode. Nous utilisons à nouveau la fonction Time () et sa valeur est enregistrée dans la variable «fin».

La méthode print () est appliquée pour montrer le temps calculé. Maintenant, nous calculons la factorielle afin que nous définissons la méthode factorielle (). Nous passons le nombre spécifique comme son paramètre. Nous définissons une valeur de 3 secondes pour la fonction Sleep () car cela prend très peu de temps pour que nous puissions remarquer la différence réelle. La fonction print () est utilisée pour afficher le factoriel du numéro. En fin de compte, nous invoquons le factoriel en fournissant le nombre dont nous voulons calculer le factoriel.

Conclusion

Dans ce guide, nous avons discuté de la façon de fournir une fonction à une variable, comment traiter les fonctions comme des objets, comment renvoyer les fonctions et comment fournir une fonction en tant que paramètre à une autre fonction. Parallèlement à plusieurs cas, nous avons également démontré comment construire et utiliser les décorateurs de Python. Nous avons mis en œuvre le code qui utilise les décorateurs pour modifier le comportement d'une fonction. Et dans une autre illustration, nous avons utilisé un décorateur pour déterminer la durée d'une fonction pour exécuter.