Kom igångKom igång gratis

HTML-generator

Du skriver ett skript som genererar HTML för en webbsida dynamiskt. Hittills har du skrivit två dekoratorer som lägger till taggar för fetstil eller kursiv text runt valfri funktion som returnerar en sträng. Du märker dock att dessa två dekoratorer ser väldigt lika ut. I stället för att skriva en massa liknande dekoratorer vill du skapa en enda dekorator, html(), som kan ta vilket par av öppnings- och stängningstaggar som helst.

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

Den här övningen är en del av kursen

Att skriva funktioner i Python

Visa kurs

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

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 ____
Redigera och kör kod