Middle+
Cos'è una fabbrica di decoratori?
sobes.tech AI
Risposta dell'AI
Una fabbrica di decoratori è una funzione che restituisce un decoratore. Essa accetta argomenti per configurare il comportamento del decoratore restituito. Questo permette di creare decoratori riutilizzabili con comportamenti diversi a seconda dei parametri passati.
# Funzione-fabbrica di decoratori
def my_decorator_factory(prefix):
# Funzione interna (decoratore), che accetta la funzione da decorare
def my_decorator(func):
# Un'altra funzione interna (wrapper), che contiene la logica del decoratore
def wrapper(*args, **kwargs):
print(f"{prefix}: Prima di chiamare la funzione {func.__name__}")
result = func(*args, **kwargs)
print(f"{prefix}: Dopo aver chiamato la funzione {func.__name__}")
return result
return wrapper
return my_decorator
# Uso della fabbrica per creare decoratori con prefissi diversi
@my_decorator_factory("DEBUG")
def some_function():
print("Esecuzione di some_function")
@my_decorator_factory("INFO")
def another_function(x, y):
print(f"Esecuzione di another_function con argomenti {x}, {y}")
return x + y
some_function()
result = another_function(5, 10)
print(f"Risultato: {result}")
Passaggi principali:
- Si definisce una funzione esterna (fabbrica) con parametri.
- All’interno della fabbrica, si definisce una funzione decoratore che accetta la funzione da decorare.
- All’interno della funzione decoratore, si definisce una funzione wrapper che contiene la logica del decoratore e può usare parametri della fabbrica e argomenti della funzione decorata.
- La funzione decoratore restituisce la funzione wrapper.
- La fabbrica restituisce la funzione decoratore.
Questo è utile per creare decoratori flessibili e configurabili.