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