Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Skriva Parameteriserade Dekoratörer | Bemästra Python-Iteratorer och Dekoratorer
Funktionella Programmeringskoncept i Python

bookSkriva 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:

  1. Yttre funktion accepterar dekoratörens argument;
  2. Mellersta funktion är själva dekoratören som tar emot funktionen som ska dekoreras;
  3. 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()
copy

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?

question mark

Hur skiljer sig en parametriserad dekoratör från en vanlig dekoratör?

Vänligen välj det korrekta svaret

question mark

Varför kan du vilja skicka argument till en dekoratör?

Vänligen välj det korrekta svaret

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 4. Kapitel 3

Fråga AI

expand

Fråga AI

ChatGPT

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
some-alt