Concatenazione e Impilamento dei Decorator
Scorri per mostrare il menu
Quando si lavora con i decoratori in Python, spesso è necessario applicare più di un decoratore a una singola funzione. Questo è noto come stacking o chaining dei decoratori. Il modo in cui si impilano i decoratori consiste nel posizionare più righe di decoratori, una dopo l'altra, direttamente sopra la definizione della funzione. L'ordine in cui si impilano i decoratori è importante perché influisce su come la funzione viene avvolta e su come ciascun decoratore interagisce con gli altri. Il decoratore più vicino alla funzione viene applicato per primo, e ogni decoratore successivo avvolge il risultato di quello precedente. Questo significa che il decoratore in cima alla pila è l'involucro più esterno, mentre quello più vicino alla funzione è il più interno.
Nell'esempio seguente vengono definiti due decoratori, decorator_one e decorator_two, impilati sopra una funzione chiamata greet. L'ordine di impilamento determina come vengono applicati i decoratori.
123456789101112131415161718192021222324252627# Prints messages before and after the function call def decorator_one(func): def wrapper(*args, **kwargs): print("Decorator One: Before") result = func(*args, **kwargs) print("Decorator One: After") return result return wrapper # Also prints messages before and after the function call def decorator_two(func): def wrapper(*args, **kwargs): print("Decorator Two: Before") result = func(*args, **kwargs) print("Decorator Two: After") return result return wrapper # Stacking decorators # decorator_two is applied first (innermost), # then decorator_one wraps the result (outermost) @decorator_one @decorator_two def greet(name): print(f"Hello, {name}!") greet("Alice")
Nota che decorator_two viene applicato per primo a greet, e poi decorator_one avvolge il risultato. Questo significa che il decoratore più vicino alla funzione è il più interno, mentre quello più in alto è il più esterno. L'ordine di impilamento è importante, poiché influisce sul comportamento della funzione decorata.
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione