CommencezCommencez gratuitement

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

Voir le cours

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 ____
Modifier et exécuter le code