デコレータ
デコレータでちと詰まったのでメモ
n()関数を例にとると、関数の宣言(def n(i)うんたら)自体は「nっていう変数に関数オブジェクトを突っ込む」っていうイメージでいいのかな。でデコレータは戻り値をnっていう変数に突っ込んでるということかな。
# -*- coding: utf-8 -*- def d1(f): def g(i): return f(i)*2 return g @d1 def n(i): return i*i #デコレータによりn()関数の中身は #d1()関数のリターンであるg()関数に書き換えられている print 'デコレータ使用' print n(4) #デコレータを使わない場合は f = d1(lambda x:x*x) print 'デコレータ未使用' print f(4)
追記:比較しやすいように修正 2009/7/27