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 ____