Python Academy · Lektion

Dekoratorer

Lär dig använda dekoratorer för att ändra eller utöka funktioner.

Lektion 1 av 511 steg

Dekoratorer är en gratis lektion i Python Academy på CoddyKit. Detta är lektion 1 av 5. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Python Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Python Academy innehåller totalt 5 lektioner.

Introduktion till dekoratorer

Dekoratorer är en kraftfull funktion i Python som gör att du kan ändra funktioners eller metoders beteende. De används ofta för att lägga till funktionalitet i funktioner utan att ändra deras kod.

I den här lektionen får du lära dig vad dekoratorer är, hur du använder dem och hur du skapar egna dekoratorer.

Dekoratorer — illustration 1

Vad är en dekorator

En dekorator är en funktion som tar en annan funktion som indata och returnerar en ny funktion med utökad funktionalitet. Den används ofta tillsammans med syntaxen @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å fungerar dekoratorer

När du använder en dekorator ersätter Python den ursprungliga funktionen med den wrapper-funktion som dekoratorn returnerar.

# 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()

Använda dekoratorer med argument

Dekoratorer kan fungera med funktioner som tar argument genom att använda *args och **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))

Kedja flera dekoratorer

Du kan använda flera dekoratorer på en och samma funktion. De tillämpas i den ordning de visas, uppifrån och ned:

# 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()

Skapa parametriserade dekoratorer

Parametriserade dekoratorer tar argument och möjliggör mer flexibel 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()

Vanliga användningsområden för dekoratorer

Dekoratorer används ofta för:

  • Loggning av funktionsanrop och deras argument.
  • Mätning av funktioners körtid.
  • Åtkomstkontroll (t.ex. kontroll av användarbehörigheter).
  • Cachelagring av resultat för bättre prestanda.

Inbyggda dekoratorer i Python

Python innehåller flera inbyggda dekoratorer, bland annat:

  • @staticmethod: Definierar en statisk metod.
  • @classmethod: Definierar en klassmetod.
  • @property: Definierar en property-metod.

Vanliga misstag med dekoratorer

Här är några misstag du bör undvika:

  • Att inte bevara den ursprungliga funktionens namn och docstring (använd functools.wraps).
  • Att använda dekoratorer i onödan för enkla uppgifter.
  • Att glömma att hantera argument i wrapper-funktionen.

Vad har vi lärt oss?

I den här lektionen har du lärt dig:

  • Vad dekoratorer är och hur de fungerar i Python.
  • Hur du skapar och använder grundläggande, parametriserade och kedjade dekoratorer.
  • Vanliga användningsområden för och inbyggda dekoratorer i Python.

Bra jobbat! Nu går vi vidare till nästa ämne.

Dekoratorer — illustration 11
Gratis att börja

Lär dig Python med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
76
Lektioner
320

Vanliga frågor

Är lektionen ”Dekoratorer” gratis?

Ja – hela texten till ”Dekoratorer” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Python Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Python Academy innehåller totalt 5 lektioner.

Vad lär jag mig i ”Dekoratorer”?

Lär dig använda dekoratorer för att ändra eller utöka funktioner. Ni övar på Python Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Python Academy?

Du behöver inga förkunskaper. Utbildningen i Python Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 5.

Hur lång tid tar lektionen ”Dekoratorer”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Python Academy-lektionen?

Ja. Varje Python Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Dekoratorer
  2. Generatorer
  3. Kontexthanterare (with-satser)
  4. Comprehensions (listor, mängder och dictionaries)
  5. Iteratorer och itererbara objekt
← Tillbaka till Python Academy