Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Het Schrijven van Gedecoreerde Functies met Parameters | Meesterschap in Python-Iterators en Decorateurs
Functionele Programmeerconcepten in Python

bookHet Schrijven van Gedecoreerde Functies met Parameters

Veeg om het menu te tonen

Wanneer je wilt dat je decorator zich anders gedraagt afhankelijk van bepaalde invoer, moet je een geparameteriseerde decorator maken. In tegenstelling tot gewone decorators, die alleen de functie als argument nemen, accepteren geparameteriseerde decorators hun eigen argumenten, waardoor je hun gedrag dynamisch kunt aansturen. Dit is vooral handig wanneer je een decorator in meerdere situaties met verschillende configuraties wilt hergebruiken.

De structuur van een geparameteriseerde decorator:

  1. De buitenste functie accepteert de decorator-argumenten;
  2. De middelste functie is de daadwerkelijke decorator die de te decoreren functie ontvangt;
  3. De binnenste functie omhult en beheert de uitvoering van de originele functie.

Deze gelaagde aanpak maakt het mogelijk om argumenten aan de decorator door te geven, die vervolgens beschikbaar zijn wanneer de gedecoreerde functie wordt aangeroepen.

12345678910111213141516171819202122
# Outer function: accepts the decorator argument 'times' def repeat(times): # The actual decorator that takes the function to be decorated def decorator(func): # Inner function: wraps and controls the execution of 'func' def wrapper(*args, **kwargs): result = None # Call the original function 'times' times for _ in range(times): result = func(*args, **kwargs) return result # Return the wrapper to replace the original function return wrapper # Return the decorator function return decorator # Apply the repeat decorator @repeat(3) def say_hello(): print("Hello!") say_hello()
copy

1. Hoe verschilt een geparameteriseerde decorator van een gewone decorator?

2. Waarom zou je argumenten willen doorgeven aan een decorator?

question mark

Hoe verschilt een geparameteriseerde decorator van een gewone decorator?

Selecteer het correcte antwoord

question mark

Waarom zou je argumenten willen doorgeven aan een decorator?

Selecteer het correcte antwoord

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 4. Hoofdstuk 3

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

Sectie 4. Hoofdstuk 3
some-alt