Generatore HTML
Stai scrivendo uno script che genera al volo l'HTML per una pagina web. Finora hai scritto due decorator che aggiungono i tag grassetto o corsivo a qualsiasi funzione che restituisce una stringa. Noti però che questi due decorator sono molto simili. Invece di scrivere tanti altri decorator simili, vuoi creare un unico decorator, html(), che possa accettare qualsiasi coppia di tag di apertura e chiusura.
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
Questo esercizio fa parte del corso
Scrivere funzioni in Python
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
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 ____