HTML-Generator
Du schreibst ein Skript, das HTML für eine Webseite dynamisch erzeugt. Bisher hast du zwei Decorators geschrieben, die beliebigen Funktionen, die einen String zurückgeben, Fett- bzw. Kursiv-Tags hinzufügen. Dir fällt jedoch auf, dass sich diese beiden Decorators sehr ähnlich sind. Anstatt eine ganze Reihe ähnlich aussehender Decorators zu schreiben, willst du einen einzigen html()-Decorator erstellen, der jedes beliebige Paar aus öffnenden und schließenden Tags annehmen kann.
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
Diese Übung ist Teil des Kurses
<Kurs>Funktionen in Python schreiben</Kurs>Interaktive praktische Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
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 ____