HTML-generator
Je schrijft een script dat on the fly HTML voor een webpagina genereert. Tot nu toe heb je twee decorators geschreven die bold- of italic-tags toevoegen aan elke functie die een string retourneert. Je merkt echter dat deze twee decorators erg op elkaar lijken. In plaats van nog meer soortgelijke decorators te schrijven, wil je één decorator maken, html(), die elk paar openings- en sluitingstags kan aannemen.
def bold(func):
@wraps(func)
def wrapper(*args, **kwargs):
msg = func(*args, **kwargs)
return '<b>{}</b>'.format(msg)
return wrapper
def italics(func):
@wraps(func)
def wrapper(*args, **kwargs):
msg = func(*args, **kwargs)
return '<i>{}</i>'.format(msg)
return wrapper
Deze oefening maakt deel uit van de cursus
Functies schrijven in Python
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
def html(open_tag, close_tag):
def decorator(func):
@wraps(func)
def wrapper(*args, **kwargs):
msg = func(*args, **kwargs)
return '{}{}{}'.format(open_tag, msg, close_tag)
# Return the decorated function
return ____
# Return the decorator
return ____