Scrivere Decoratori Parametrizzati
Scorri per mostrare il menu
Quando si desidera che un decoratore si comporti in modo diverso a seconda di un input, è necessario creare un decoratore parametrizzato. A differenza dei decoratori regolari, che accettano solo la funzione come argomento, i decoratori parametrizzati accettano i propri argomenti, permettendo di controllare dinamicamente il loro comportamento. Questo è particolarmente utile quando si vuole riutilizzare un decoratore in più situazioni con configurazioni diverse.
Struttura di un decoratore parametrizzato:
- La funzione esterna accetta gli argomenti del decoratore;
- La funzione intermedia è il decoratore vero e proprio che prende la funzione da decorare;
- La funzione interna incapsula e controlla l'esecuzione della funzione originale.
Questo approccio a livelli consente di passare argomenti al decoratore, che saranno poi disponibili quando viene chiamata la funzione decorata.
12345678910111213141516171819202122# Outer function: accepts the decorator argument 'times' def repeat(times): # The actual decorator that takes the function to be decorated def decorator(func): # Inner function: wraps and controls the execution of 'func' def wrapper(*args, **kwargs): result = None # Call the original function 'times' times for _ in range(times): result = func(*args, **kwargs) return result # Return the wrapper to replace the original function return wrapper # Return the decorator function return decorator # Apply the repeat decorator @repeat(3) def say_hello(): print("Hello!") say_hello()
1. In che modo un decoratore parametrizzato si differenzia da un decoratore regolare?
2. Perché potresti voler passare argomenti a un decoratore?
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