Heim  >  Artikel  >  Backend-Entwicklung  >  Beispiel einer Decorator-Kaskade in Python

Beispiel einer Decorator-Kaskade in Python

黄舟
黄舟Original
2017-10-03 05:45:421223Durchsuche

Ein Dekorator ist im Wesentlichen eine Python-Funktion, die es anderen Funktionen ermöglicht, zusätzliche Funktionen hinzuzufügen, ohne Codeänderungen vorzunehmen. Der folgende Artikel führt Sie hauptsächlich in die Verwendung von Dekoratorkaskaden in Python ein. Freunde in Not können sich darauf beziehen gemeinsam lernen.

Vorwort

Ich habe kürzlich Python gelernt und gelernt, warum man Dekoratoren verwendet, und ich verstehe auch, was Dekoratoren sind, aber Sie fragen sich vielleicht: Was passiert, wenn Sie vor den Dekoratoren eine weitere Schicht Dekorateure hinzufügen können? Wie bei einem Gebäude werden Schichten übereinander gestapelt. Tatsächlich ist es möglich. Lernen wir nun diese Stapeltechnologie kennen, die der Klassenvererbung ähnelt und kontinuierlich vererbt werden kann. Im Folgenden gibt es nicht viel zu sagen. Werfen wir einen Blick auf die ausführliche Einführung.

Der Code lautet wie folgt:


#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")

Das Ergebnis Die Ausgabe lautet wie folgt:


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

In diesem Beispiel wird das Sternchen zuerst ausgegeben, dh der Dekoratorstern der ersten Ebene wird zuerst aufgerufen, und dann wird der Dekoratorprozentsatz der zweiten Ebene aufgerufen. Schließlich wird die Funktion Drucker aufgerufen.

Zusammenfassung

Das obige ist der detaillierte Inhalt vonBeispiel einer Decorator-Kaskade in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn