Générateur HTML
Vous écrivez un script qui génère du HTML pour une page Web à la volée. Jusqu'ici, vous avez créé deux décorateurs qui ajoutent des balises de gras ou d'italique à toute fonction qui retourne une chaîne de caractères. Vous remarquez toutefois que ces deux décorateurs se ressemblent beaucoup. Plutôt que d'écrire toute une série d'autres décorateurs similaires, vous voulez créer un seul décorateur, html(), qui peut accepter n'importe quelle paire de balises ouvrante et fermante.
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
Cette activité fait partie du cours
Écrire des fonctions en Python
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
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 ____