Maison  >  Article  >  développement back-end  >  Exemple de cascade de décorateurs en python

Exemple de cascade de décorateurs en python

黄舟
黄舟original
2017-10-03 05:45:421181parcourir

Un décorateur est essentiellement une fonction Python, qui permet à d'autres fonctions d'ajouter des fonctions supplémentaires sans apporter de modifications au code. L'article suivant vous présente principalement l'utilisation des cascades de décorateurs en Python, les amis dans le besoin peuvent s'y référer. apprendre ensemble.

Préface

J'ai récemment appris Python et j'ai appris pourquoi utiliser des décorateurs, et je comprends aussi ce que sont les décorateurs, mais vous pouvez Vous demanderez, si vous pouvez ajouter une autre couche de décorateurs devant les décorateurs, que se passera-t-il ? Tout comme dans un bâtiment, les couches sont empilées les unes sur les autres. En fait, c'est possible. Apprenons maintenant cette technologie d'empilement, qui est similaire à l'héritage de classe et peut être héritée en continu. Pas grand chose à dire ci-dessous, jetons un œil à l’introduction détaillée.

Le code est le suivant :


#python 3.6 
def star(func): 
  def inner(*args, **kwargs): 
    print("*" * 30) 
    func(*args, **kwargs) 
    print("*" * 30) 
  return inner 
 
def percent(func): 
  def inner(*args, **kwargs): 
    print("%" * 30) 
    func(*args, **kwargs) 
    print("%" * 30) 
  return inner 
 
@star 
@percent 
def printer(msg): 
  print(msg) 
printer("Hello")

Le résultat la sortie est la suivante :


******************************
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Hello
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
******************************

Dans cet exemple, l'astérisque est affiché en premier, c'est-à-dire que l'étoile du décorateur de première couche est appelée en premier, et puis le pourcentage du décorateur de deuxième couche est appelé. Enfin, la fonction imprimante est appelée.

Résumé

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn