НачатьНачать бесплатно

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