Skriva Parameteriserade Dekoratörer
Svep för att visa menyn
När du vill att din dekoratör ska bete sig olika beroende på viss indata behöver du skapa en parametriserad dekoratör. Till skillnad från vanliga dekoratörer, som endast tar funktionen som argument, accepterar parametriserade dekoratörer egna argument, vilket gör att du kan styra deras beteende dynamiskt. Detta är särskilt användbart när du vill återanvända en dekoratör i flera situationer med olika konfigurationer.
Strukturen för en parametriserad dekoratör:
- Yttre funktion accepterar dekoratörens argument;
- Mellersta funktion är själva dekoratören som tar emot funktionen som ska dekoreras;
- Inre funktion omsluter och styr exekveringen av den ursprungliga funktionen.
Detta lagerbaserade tillvägagångssätt gör att du kan skicka argument till dekoratören, vilka sedan är tillgängliga när den dekorerade funktionen anropas.
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. Hur skiljer sig en parametriserad dekoratör från en vanlig dekoratör?
2. Varför kan du vilja skicka argument till en dekoratör?
Var allt tydligt?
Tack för dina kommentarer!
Avsnitt 4. Kapitel 3
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
Avsnitt 4. Kapitel 3