Aan de slagGa gratis aan de slag

HTML-generator

Je schrijft een script dat on the fly HTML voor een webpagina genereert. Tot nu toe heb je twee decorators geschreven die bold- of italic-tags toevoegen aan elke functie die een string retourneert. Je merkt echter dat deze twee decorators erg op elkaar lijken. In plaats van nog meer soortgelijke decorators te schrijven, wil je één decorator maken, html(), die elk paar openings- en sluitingstags kan aannemen.

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

Deze oefening maakt deel uit van de cursus

Functies schrijven in Python

Cursus bekijken

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

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 ____
Code bewerken en uitvoeren