CommencerCommencer gratuitement

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

Afficher le cours

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