Générateur HTML
Vous êtes en train de rédiger un script qui génère du code HTML pour une page Web à la volée. Jusqu'à présent, vous avez créé deux décorateurs qui ajouteront des balises gras ou italique à toute fonction renvoyant une chaîne de caractères. Vous remarquerez toutefois que ces deux décorateurs sont très similaires. Au lieu de créer plusieurs décorateurs similaires, il est préférable de créer un seul décorateur, html(), capable de prendre n'importe quelle paire de balises d'ouverture et de fermeture.
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
Cet exercice fait partie du cours
Écrire des fonctions en Python
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
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 ____