Python Academy · Les

Decorators

Leer decorators gebruiken om functies aan te passen of uit te breiden

Les 1 van 511 stappen

Decorators is een gratis Python Academy-les op CoddyKit. Dit is les 1 van 5. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Python Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Python Academy bevat in totaal 5 lessen.

Inleiding in decorators

Decorators zijn een krachtige functie van Python waarmee je het gedrag van functies of methoden kunt aanpassen. Ze worden vaak gebruikt om functionaliteit aan functies toe te voegen zonder hun code aan te passen.

In deze les leer je wat decorators zijn, hoe je ze gebruikt en hoe je je eigen decorators maakt.

Decorators — illustratie 1

Wat is een decorator?

Een decorator is een functie die een andere functie als invoer neemt en een nieuwe functie met extra functionaliteit teruggeeft. Je gebruikt deze vaak met de syntaxis @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()

Hoe werken decorators?

Wanneer je een decorator gebruikt, vervangt Python de oorspronkelijke functie door de wrapperfunctie die de decorator teruggeeft.

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

Decorators met argumenten gebruiken

Decorators kunnen samenwerken met functies die argumenten accepteren door *args en **kwargs in de wrapperfunctie te gebruiken:

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

Meerdere decorateurs aan elkaar koppelen

Je kunt meerdere decorateurs op één functie gebruiken. Ze worden toegepast in de volgorde waarin ze staan, van boven naar beneden:

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

Geparametriseerde decorateurs maken

Geparametriseerde decorateurs accepteren argumenten en maken flexibelere functionaliteit mogelijk:

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

Veelvoorkomende toepassingen van decorateurs

Decorateurs worden vaak gebruikt voor:

  • Het registreren van functieaanroepen en hun argumenten.
  • Het meten van de uitvoeringstijd van functies.
  • Toegangsbeheer, bijvoorbeeld het controleren van gebruikersrechten.
  • Het opslaan van resultaten in de cache voor betere prestaties.

Ingebouwde decorateurs in Python

Python bevat enkele ingebouwde decorateurs, waaronder:

  • @staticmethod: Definieert een statische methode.
  • @classmethod: Definieert een klassemethode.
  • @property: Definieert een eigenschapsmethode.

Veelvoorkomende fouten met decorateurs

Dit zijn enkele fouten die je moet vermijden:

  • De naam en documentatietekst van de oorspronkelijke functie niet behouden, gebruik daarvoor functools.wraps.
  • Decorateurs onnodig gebruiken voor eenvoudige taken.
  • Vergeten om argumenten in de omhullende functie te verwerken.

Wat hebben we geleerd?

In deze les heb je geleerd:

  • Wat decorateurs zijn en hoe ze in Python werken.
  • Hoe je eenvoudige, geparametriseerde en gekoppelde decorateurs maakt en gebruikt.
  • Veelvoorkomende toepassingen en ingebouwde decorateurs in Python.

Goed gedaan! Laten we doorgaan naar het volgende onderwerp.

Decorators — illustratie 11
Gratis beginnen

Leer Python met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
76
Lessen
320

Veelgestelde vragen

Is de les “Decorators” gratis?

Ja — de volledige tekst van “Decorators” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Python Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Python Academy bevat in totaal 5 lessen.

Wat leer ik in “Decorators”?

Leer decorators gebruiken om functies aan te passen of uit te breiden Je oefent met Python Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Python Academy te beginnen?

Ervaring vooraf is niet nodig. Python Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 1 van 5.

Hoe lang duurt de les “Decorators”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Python Academy?

Ja. Elke les over Python Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Decorators
  2. Generators
  3. Contextmanagers (with-instructies)
  4. Comprehensions (lijst, set en woordenboek)
  5. Iterators en iterables
← Terug naar Python Academy