Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Concatenazione e Impilamento dei Decorator | Padronanza Degli Iteratori e Dei Decorator in Python
Concetti di Programmazione Funzionale in Python

bookConcatenazione 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")
copy
Note
Nota

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.

question mark

In quale ordine vengono applicati i decoratori impilati in Python?

Seleziona tutte le risposte corrette

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 4. Capitolo 5

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

Sezione 4. Capitolo 5
some-alt