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
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 ____