Decorators
Lær at bruge decorators til at ændre eller udvide funktioner.
Decorators er en gratis Python Academy-lektion på CoddyKit. Dette er lektion 1 af 5. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Python Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Python Academy-kurset indeholder 5 lektioner i alt.
Introduktion til dekoratorer
Dekoratorer er en kraftfuld funktion i Python, der gør det muligt at ændre funktioners eller metoders adfærd. De bruges ofte til at tilføje funktionalitet til funktioner uden at ændre deres kode.
I denne lektion lærer du, hvad dekoratorer er, hvordan du bruger dem, og hvordan du opretter dine egne dekoratorer.

Hvad er en dekorator
En dekorator er en funktion, der modtager en anden funktion som inddata og returnerer en ny funktion med ekstra funktionalitet. Den bruges ofte sammen med syntaksen @decorator_name.
# Basic example of a decorator
def decorator(func):
def wrapper():
print("Before the function call")
func()
print("After the function call")
return wrapper
@decorator
def say_hello():
print("Hello!")
say_hello()Sådan fungerer dekoratorer
Når du bruger en dekorator, erstatter Python den oprindelige funktion med den omsluttende funktion, som dekoratoren returnerer.
# How decorators work
def decorator(func):
def wrapper():
print("Wrapper called")
func()
return wrapper
@decorator
def greet():
print("Greetings!")
print(greet.__name__) # Outputs: wrapper
greet()Brug af dekoratorer med argumenter
Dekoratorer kan fungere med funktioner, der modtager argumenter, ved at bruge *args og **kwargs i den omsluttende funktion:
# Decorator for functions with arguments
def decorator(func):
def wrapper(*args, **kwargs):
print(f"Arguments: {args}, {kwargs}")
return func(*args, **kwargs)
return wrapper
@decorator
def add(a, b):
return a + b
print(add(3, 5))Kædning af flere dekoratorer
Du kan bruge flere dekoratorer på en enkelt funktion. De anvendes i den rækkefølge, de står i, fra top til bund:
# Chaining multiple decorators
def decorator1(func):
def wrapper():
print("Decorator 1")
func()
return wrapper
def decorator2(func):
def wrapper():
print("Decorator 2")
func()
return wrapper
@decorator1
@decorator2
def greet():
print("Hello!")
greet()Oprettelse af parametriserede dekoratorer
Parametriserede dekoratorer tager argumenter og giver mulighed for mere fleksibel funktionalitet:
# Parameterized decorator
def repeat(times):
def decorator(func):
def wrapper(*args, **kwargs):
for _ in range(times):
func(*args, **kwargs)
return wrapper
return decorator
@repeat(3)
def say_hello():
print("Hello!")
say_hello()Almindelige anvendelsesområder for dekoratorer
Dekoratorer bruges ofte til:
- Logning af funktionskald og deres argumenter.
- Måling af funktioners udførelsestid.
- Adgangskontrol (f.eks. kontrol af brugertilladelser).
- Midlertidig lagring af resultater for bedre ydeevne.
Indbyggede dekoratorer i Python
Python indeholder nogle indbyggede dekoratorer, blandt andet:
@staticmethod: Definerer en statisk metode.@classmethod: Definerer en klassemetode.@property: Definerer en egenskabsmetode.
Almindelige fejl med dekoratorer
Her er nogle fejl, du bør undgå:
- Ikke at bevare den oprindelige funktions navn og dokumentationsstreng (brug
functools.wraps). - At bruge dekoratorer unødvendigt til simple opgaver.
- At glemme at håndtere argumenter i wrapper-funktionen.
Hvad har du lært?
I denne lektion har du lært:
- Hvad dekoratorer er, og hvordan de fungerer i Python.
- Hvordan du opretter og bruger grundlæggende, parametriserede og kædede dekoratorer.
- Almindelige anvendelsesområder for dekoratorer og indbyggede dekoratorer i Python.
Godt klaret! Lad os gå videre til det næste emne.

Lær Python med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 76
- Lektioner
- 320
Ofte stillede spørgsmål
Er lektionen “Decorators” gratis?
Ja — hele teksten til “Decorators” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Python Academy-kurset, skal du opgradere til CoddyKit PRO. Python Academy-kurset indeholder 5 lektioner i alt.
Hvad lærer jeg i “Decorators”?
Lær at bruge decorators til at ændre eller udvide funktioner. Du øver dig i Python Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Python Academy?
Der kræves ingen tidligere erfaring. Python Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 5.
Hvor lang tid tager lektionen “Decorators”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Python Academy-lektion?
Ja. Alle Python Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Decorators
- Generators
- Context managers (with-udtryk)
- Comprehensions (lister, sæt og dictionaries)
- Iteratorer og iterables