Генератор 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 ____