Voorzie je functies van tags
Iets taggen betekent dat je dat een of meer strings hebt gegeven die als labels fungeren. We taggen bijvoorbeeld vaak e-mails of foto’s zodat we ze later kunnen terugvinden. Je hebt besloten een decorator te schrijven waarmee je je functies kunt taggen met een willekeurige lijst van tags. Je kunt deze tags voor allerlei dingen gebruiken:
- Informatie toevoegen over wie aan de functie heeft gewerkt, zodat een gebruiker weet bij wie hij of zij terechtkan als er problemen zijn bij het gebruik.
- Functies labelen als "experimental" zodat gebruikers weten dat de inputs en outputs in de toekomst kunnen veranderen.
- Functies markeren die je in een toekomstige versie van de code wilt verwijderen.
- Enzovoort.
Deze oefening maakt deel uit van de cursus
Functies schrijven in Python
Oefeninstructies
- Definieer een nieuwe decorator, genaamd
decorator(), om terug te geven. - Zorg dat de gedecoreerde functie haar metadata behoudt.
- Roep de te decoreren functie aan en retourneer het resultaat.
- Retourneer de nieuwe decorator.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
def tag(*tags):
# Define a new decorator, named "decorator", to return
def ____(____):
# Ensure the decorated function keeps its metadata
@____(____)
def wrapper(*args, **kwargs):
# Call the function being decorated and return the result
return ____(____, ____)
wrapper.tags = tags
return wrapper
# Return the new decorator
return ____
@tag('test', 'this is a tag')
def foo():
pass
print(foo.tags)