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 ____