始める無料で始める

HTML ジェネレーター

あなたは、ウェブページ用の HTML をその場で生成するスクリプトを書いています。これまでに、文字列を返す関数に太字または斜体のタグを追加する 2 つのデコレータを作成しました。ただし、この 2 つのデコレータはとてもよく似ていることに気づきました。よく似たデコレータをたくさん書く代わりに、任意の開始タグと終了タグを受け取れる 1 つのデコレータ 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 ____
コードを編集して実行