Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Skrivning af parameteriserede dekoratører | Mestring af Python-Iteratorer og Dekoratører
Funktionelle Programmeringskoncepter i Python

bookSkrivning af parameteriserede dekoratører

Stryg for at vise menuen

Når du ønsker, at din dekoratør skal opføre sig forskelligt afhængigt af et input, skal du oprette en parameteriseret dekoratør. I modsætning til almindelige dekoratører, som kun tager funktionen som argument, accepterer parameteriserede dekoratører deres egne argumenter, hvilket gør det muligt at styre deres opførsel dynamisk. Dette er især nyttigt, når du vil genbruge en dekoratør i flere situationer med forskellige konfigurationer.

Strukturen af en parameteriseret dekoratør:

  1. Ydre funktion accepterer dekoratørens argumenter;
  2. Mellemste funktion er selve dekoratøren, der tager den funktion, som skal dekoreres;
  3. Inderste funktion indpakker og styrer udførelsen af den oprindelige funktion.

Denne lagdelte tilgang gør det muligt at videregive argumenter til dekoratøren, som derefter er tilgængelige, når den dekorerede funktion kaldes.

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. Hvordan adskiller en parameteriseret dekoratør sig fra en almindelig dekoratør?

2. Hvorfor kunne man ønske at videregive argumenter til en dekoratør?

question mark

Hvordan adskiller en parameteriseret dekoratør sig fra en almindelig dekoratør?

Vælg det korrekte svar

question mark

Hvorfor kunne man ønske at videregive argumenter til en dekoratør?

Vælg det korrekte svar

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 4. Kapitel 3

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Sektion 4. Kapitel 3
some-alt