始める無料で始める

関数にタグを付ける

何かにタグ付けするとは、その対象にラベルとして機能する1つ以上の文字列を付けることです。たとえば、あとで検索できるように、メールや写真にタグを付けることがありますよね。そこで、任意のタグ一覧で関数にタグを付けられるデコレータを書くことにしました。これらのタグは次のようにさまざまな用途に使えます。

  • その関数に誰が関わったかという情報を追加して、ユーザーが利用時に困ったら誰に質問すればよいか分かるようにする。
  • 関数を「experimental」としてラベル付けし、将来入力や出力が変わる可能性があることをユーザーに知らせる。
  • 将来のバージョンで削除予定の関数をマークする。
  • など。

この演習はコースの一部です

Python関数の書き方

コースを見る

演習の手順

  • 返す新しいデコレータ decorator() を定義します。
  • デコレート後の関数がメタデータを保持するようにします。
  • デコレート対象の関数を呼び出し、その結果を返します。
  • 新しいデコレータを返します。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

def tag(*tags):
  # Define a new decorator, named "decorator", to return
  def ____(____):
    # Ensure the decorated function keeps its metadata
    @____(____)
    def wrapper(*args, **kwargs):
      # Call the function being decorated and return the result
      return ____(____, ____)
    wrapper.tags = tags
    return wrapper
  # Return the new decorator
  return ____

@tag('test', 'this is a tag')
def foo():
  pass

print(foo.tags)
コードを編集して実行