HTML-generator
Du skriver ett skript som genererar HTML för en webbsida dynamiskt. Hittills har du skrivit två dekoratorer som lägger till taggar för fetstil eller kursiv text runt valfri funktion som returnerar en sträng. Du märker dock att dessa två dekoratorer ser väldigt lika ut. I stället för att skriva en massa liknande dekoratorer vill du skapa en enda dekorator, html(), som kan ta vilket par av öppnings- och stängningstaggar som helst.
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
Den här övningen är en del av kursen
Att skriva funktioner i Python
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
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 ____