pythonにおけるデコレータと高階関数の関係

Python

デコレータってなんだろう?

デコレータって英語のdecorate, decoration から来ていて、装飾するとか修飾するとかいう意味です。

突然、例え話ですが、
部屋にクリスマスツリーを飾ると部屋はクリスマスモードに変わりますよね。
まさしくそんな感じです。

 

文字通り下の関数をデコレートします。

WebフレームワークFlask等を使っているとよく見かける表現になります。

ココにアクセスされたこういうレスポンスを返すみたいな状況でよく使われます。

@app('/')
def func():
    print('Hello world!')

'/' ルートにアクセスされたら、func関数を実行するみたいな感じです。

文字通り下の関数を修飾する関数です。

 

 

 

 

def a1(para1):
  print(para1)
  def a2(f):
    for i in range(para1):
      print(f())
    return f
  return a2

#デコレータは高階関数のシンタックスシュガーであるので、b2 = a1(10)(b1)と同じである。
@a1(10)
def b1():
  return "good evening"

b2 = a1(10)(b1)

コメント