ПочатиПочніть безкоштовно

Генератор HTML

Ви пишете скрипт, який на льоту генерує HTML для вебсторінки. Поки що ви створили два декоратори, що додають теги жирного або курсиву до будь-якої функції, яка повертає рядок. Водночас ви помічаєте, що ці два декоратори дуже схожі. Замість того щоб писати ще низку подібних декораторів, ви хочете створити один декоратор html(), який може приймати будь-яку пару відкривного та закривного тегів.

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

Ця вправа є частиною курсу

Написання функцій у Python

Переглянути курс

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

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 ____
Редагувати та запускати код