Python For Kids · Lektion

Decorators

Lær at bruge decorators til at ændre eller udvide funktioner

Lektion 1 af 511 trin

Decorators er en gratis Python For Kids-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 For Kids, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Python For Kids-kurset indeholder 5 lektioner i alt.

Introduktion til dekoratorer

Dekoratorer er en effektiv funktion i Python, som giver dig mulighed for at ændre funktionsmåden for funktioner eller metoder. De bruges ofte til at fø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.

Decorators — illustration 1

Hvad er en dekorator

En dekorator er en funktion, der tager en anden funktion som input 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 wrapper-funktionen, 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 tager argumenter, ved at bruge *args og **kwargs i wrapper-funktionen:

# 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å én 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 anvendelser af dekoratorer

Dekoratorer bruges ofte til:

  • Logning af funktionskald og deres argumenter.
  • Måling af funktioners kørselstid.
  • Adgangskontrol (f.eks. kontrol af brugertilladelser).
  • Cachelagring af resultater for at forbedre ydeevnen.

Indbyggede dekoratorer i Python

Python indeholder nogle indbyggede dekoratorer, herunder:

  • @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 docstring (brug functools.wraps).
  • At bruge dekoratorer unødvendigt til simple opgaver.
  • At glemme at håndtere argumenter i wrapper-funktionen.

Hvad har vi 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, parameteriserede og kædede dekoratorer.
  • Almindelige anvendelser af og indbyggede dekoratorer i Python.

Godt klaret! Lad os gå videre til det næste emne.

Decorators — illustration 11
Gratis at komme i gang

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
22
Lektioner
94

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 For Kids-kurset, skal du opgradere til CoddyKit PRO. Python For Kids-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 For Kids 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 For Kids?

Der kræves ingen tidligere erfaring. Python For Kids 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 For Kids-lektion?

Ja. Alle Python For Kids-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

  1. Decorators
  2. Generators
  3. Context managers (with-udtryk)
  4. Comprehensions (lister, sets og dictionaries)
  5. Iterators og iterables
← Tilbage til Python For Kids