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

bookKædning og Stabling af Dekoratorer

Stryg for at vise menuen

Når du arbejder med dekoratorer i Python, har du ofte brug for at anvende mere end én dekorator på en enkelt funktion. Dette kaldes stabling eller kædning af dekoratorer. Du stabler dekoratorer ved at placere flere dekoratorlinjer, én efter én, direkte over funktionsdefinitionen. Rækkefølgen, du stabler dekoratorerne i, er vigtig, da det påvirker, hvordan funktionen bliver pakket ind, og hvordan hver dekorator interagerer med de andre. Dekoratoren tættest på funktionen anvendes først, og hver efterfølgende dekorator pakker resultatet af den forrige ind. Det betyder, at dekoratoren øverst i stakken er den yderste wrapper, mens den tættest på funktionen er den inderste.

Eksemplet nedenfor definerer to dekoratorer, decorator_one og decorator_two, som er stablet over en funktion kaldet greet. Stablingsrækkefølgen bestemmer, hvordan dekoratorerne anvendes.

123456789101112131415161718192021222324252627
# Prints messages before and after the function call def decorator_one(func): def wrapper(*args, **kwargs): print("Decorator One: Before") result = func(*args, **kwargs) print("Decorator One: After") return result return wrapper # Also prints messages before and after the function call def decorator_two(func): def wrapper(*args, **kwargs): print("Decorator Two: Before") result = func(*args, **kwargs) print("Decorator Two: After") return result return wrapper # Stacking decorators # decorator_two is applied first (innermost), # then decorator_one wraps the result (outermost) @decorator_one @decorator_two def greet(name): print(f"Hello, {name}!") greet("Alice")
copy
Note
Bemærk

Bemærk, at decorator_two anvendes først på greet, og derefter omslutter decorator_one resultatet. Dette betyder, at den dekorator, der er tættest på funktionen, er den inderste, og den øverste er den yderste. Rækkefølgen af stabling er vigtig, da den påvirker opførslen af din dekorerede funktion.

question mark

I hvilken rækkefølge anvendes stablede dekoratorer i Python?

Vælg alle korrekte svar

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 4. Kapitel 5

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