IniziaInizia gratis

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

Visualizza il corso

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 ____
Modifica ed esegui il codice