Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

関数デコレータなる機能

関数の前にある「@」で記述されたアレ、関数デコレータというそうです。
本体に変更を与えることなく、追加の機能を提供します。

実際のところ

関数に入った時メッセージを追加するデコレータ"start_msg"を考えます。
実装すると、こんな感じ

def start_msg(f):
  def wrapper():
    print('***start***')
    return f()
  return wrapper

@start_msg
def process1():
   print("process1")
   return

process1()

実行すると、こういう風に動きます。

$ python test_deco.py
***start***
process1