Dekoratoren
Dekorateure
- Ein Dekorator ist eine Funktion, die eine andere Funktion umschließt, um deren Verhalten zu verbessern oder zu ändern.
- Dekoratoren sind nur aufgrund der Fähigkeit von Funktionen möglich, sich wie Variablen zu verhalten
- Ein Dekorateur verstärkt die Funktion.
- Es ist eine Funktion, die eine andere Funktion umschließt und sie verbessert oder ändert.
Einen Dekorateur erstellen
def my_decorator(func):
def wrap_func(): #inner function, with parameter x
print('**********') #extra functionality
func() #calling the original function
print('**********') #extra functionality
return wrap_func #returning the inner function
@my_decorator
def bye(): # We are decorating bye function
print() # We've super boosted our bye.
bye() # we are actually calling wrap_func inside my_decorator
Was es tut: Variable = my_decorator(func) func()
my_decorator(bye)() # same as above
DEKORMUSTER
- Dekorateure können mit args und *kwargs eine beliebige Anzahl von Argumenten akzeptieren.
def decorator(func):
def wrap_func(*args, **kwargs): #can add infinite parameters
func(*args, **kwargs)
return wrap_func
@decorator
def hey(greeting, emoji=':)'):
print(greeting, emoji)
hey('yoooo')
Leistungsbeispiel
- Messen Sie die Ausführungszeit mithilfe eines Dekorateurs eines Programms.
from time import time
def performance(fn):
def wrapper(*args, **kwargs):
st = time()
fn(*args, **kwargs)
ed = time()
print(f'took {ed-st} ms')
return wrapper
@performance
def long_time():
print(1)
for i in range(500):
return i*5
long_time()