Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Skrive Parameteriserte Dekoratører | Mastering Python-Iteratorer og Dekoratører
Funksjonelle Programmeringskonsepter i Python

bookSkrive Parameteriserte Dekoratører

Sveip for å vise menyen

Når du ønsker at dekoratøren din skal oppføre seg forskjellig avhengig av et gitt input, må du lage en parameterisert dekoratør. I motsetning til vanlige dekoratører, som kun tar funksjonen som et argument, aksepterer parameteriserte dekoratører egne argumenter, noe som lar deg kontrollere oppførselen deres dynamisk. Dette er spesielt nyttig når du vil gjenbruke en dekoratør i flere situasjoner med ulike konfigurasjoner.

Strukturen til en parameterisert dekoratør:

  1. Ytre funksjon aksepterer dekoratørens argumenter;
  2. Midtre funksjon er selve dekoratøren som tar funksjonen som skal dekoreres;
  3. Indre funksjon pakker inn og kontrollerer kjøringen av den opprinnelige funksjonen.

Denne lagdelte tilnærmingen lar deg sende argumenter til dekoratøren, som deretter er tilgjengelige når den dekorerte funksjonen kalles.

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 skiller en parameterisert dekoratør seg fra en vanlig dekoratør?

2. Hvorfor kan det være ønskelig å sende argumenter til en dekoratør?

question mark

Hvordan skiller en parameterisert dekoratør seg fra en vanlig dekoratør?

Velg det helt riktige svaret

question mark

Hvorfor kan det være ønskelig å sende argumenter til en dekoratør?

Velg det helt riktige svaret

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 4. Kapittel 3

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Seksjon 4. Kapittel 3
some-alt