【python】デコレータ小技

先日のcedecの公演のひとつにpythonでデコレータ使うと

何かと素敵だよって言ってるものがあった。

実はソースに「@」が入っているものはどういう意味かわからず

放置していた。

そう。まさにこいつがデコレータ使うよって合図だったらしい。

 

ざっくり理解したのは関数の前後に呼び出すことができるよ!

ってこと。

なるほど。

 

じゃあこれで時間が計測できるってわけね。毎回書くのが

めんどくさいなぁと思っていたことをこんなに簡単に

できただなんて、、。

しかも関数を汚さずできるなんて素敵すぎる。

 

import time

import datetime

def get_time_deco(function):

    def get_time():

        inp = datetime.datetime.now()

        function()

        print datetime.datetime.now() - inp

    return get_time()

 

@get_time_deco

def test1():

    for i in range(100):

        time.sleep(0.1)

 

test1()