Zacznij terazZacznij za darmo

Generator HTML

Piszesz skrypt, który na bieżąco generuje kod HTML dla strony internetowej. Masz już dwa dekoratory dodające tagi pogrubienia lub kursywy do dowolnej funkcji zwracającej ciąg znaków. Zauważasz jednak, że oba dekoratory wyglądają bardzo podobnie. Zamiast pisać kolejne podobne dekoratory, chcesz stworzyć jeden dekorator – html() – który przyjmie dowolną parę tagów otwierającego i zamykającego.

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

To ćwiczenie jest częścią kursu

Pisanie funkcji w Pythonie

Zobacz kurs

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

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 ____
Edytuj i uruchom kod