開始使用免費開始

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 ____
編輯並執行程式碼