Hintergrund

Im Folgenden finden Sie wichtige Fakten zu Funktionen in Python, die zum Verständnis der Dekorationsfunktionen hilfreich sind.
  1. In Python können wir eine Funktion innerhalb einer anderen Funktion definieren.
  2. In Python kann eine Funktion als Parameter an eine andere Funktion übergeben werden (eine Funktion kann auch eine andere Funktion zurückgeben).
  
def messageWithWelcome(str): 
  
    
    def addWelcome(): 
        return "Welcome to "
  
    
    
    return  addWelcome() + str
  
def site(site_name): 
    return site_name 
  
print messageWithWelcome(site("GeeksforGeeks")) 

Ausgabe:

Willkommen bei GeeksforGeeks

Funktionsdekorateur

Ein Dekorator ist eine Funktion, die eine Funktion als einzigen Parameter verwendet und eine Funktion zurückgibt. Dies ist hilfreich, um Funktionen immer wieder mit demselben Code zu "verpacken". Zum Beispiel kann der obige Code wie folgt neu geschrieben werden.

Wir verwenden @func_name, um einen Dekorator anzugeben, der auf eine andere Funktion angewendet werden soll.

def decorate_message(fun): 
  
    
    def addWelcome(site_name): 
        return "Welcome to " + fun(site_name) 
  
    
    return addWelcome 
  
@decorate_message
def site(site_name): 
    return site_name; 
  
  
print site("GeeksforGeeks") 

Ausgabe:



Willkommen bei GeeksforGeeks

Dekorateure können auch nützlich sein, um Funktionen mit Daten zu versehen (oder Attribute hinzuzufügen).

  
def attach_data(func): 
       func.data = 3
       return func 
  
@attach_data
def add (x, y): 
       return x + y 
  
  
print(add(2, 3)) 
  
print(add.data) 

Ausgabe:

5
3

'add()' gibt die Summe von x und y zurück, die als Argumente übergeben wurden, wird jedoch von einer Dekorationsfunktion umbrochen. Wenn Sie add (2, 3) aufrufen, erhalten Sie einfach die Summe von zwei Zahlen. Wenn wir jedoch add.data aufrufen, lautet die Funktion 'add' übergeben als Argument an die Dekoratorfunktion 'attach_data' und diese Funktion gibt die Funktion 'add' mit einem Attribut 'data' zurück, das auf 3 gesetzt ist, und druckt es daher aus.

Python-Dekoratoren sind ein leistungsstarkes Tool zum Entfernen von Redundanz.

Weitere Informationen finden Sie unter Dekorateure in Python .

Dieser Artikel wurde von Shwetanshu Rohatgi verfasst . Bitte schreiben Sie Kommentare, wenn Sie etwas Falsches finden oder weitere Informationen zu dem oben diskutierten Thema teilen möchten