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

bookKedjning och Stapling av Dekoratorer

Svep för att visa menyn

Vid arbete med dekoratorer i Python behöver du ofta använda mer än en dekorator på en och samma funktion. Detta kallas för stapling eller kedjning av dekoratorer. Du staplar dekoratorer genom att placera flera dekoratorrader, en efter en, direkt ovanför funktionsdefinitionen. Ordningen på dekoratorerna är viktig eftersom den påverkar hur funktionen omsluts och hur varje dekorator interagerar med de andra. Dekoratorn som är närmast funktionen appliceras först, och varje efterföljande dekorator omsluter resultatet av den föregående. Det innebär att dekoratorn högst upp i stapeln är det yttersta lagret, medan den som är närmast funktionen är det innersta.

Exemplet nedan definierar två dekoratorer, decorator_one och decorator_two, staplade ovanför en funktion som heter greet. Staplingsordningen avgör hur dekoratorerna appliceras.

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
Notering

Observera att decorator_two appliceras först på greet, och sedan omsluter decorator_one resultatet. Detta innebär att dekoratorn närmast funktionen är den innersta, och den översta är den yttersta. Ordningen för stapling är viktig eftersom den påverkar beteendet hos din dekorerade funktion.

question mark

I vilken ordning appliceras staplade dekoratorer i Python?

Välj alla rätta svar

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 4. Kapitel 5

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