Python のお勉強6 ( 関数デコレータ )

Python のお勉強シリーズ」第6回目は関数デコレータについてサンプルコード書いてみました。

関数デコレータは関数に対して機能の追加 / 変更等を行なえる機能になります。ログ出力処理とかそういうのに使えますね。

■ decorator.py

#coding: cp932

def decoFunc1(func):
    def log():
        print("call:",func)
        return func()

    return log

def decoFunc2(func):
    def log():
        func()
        print("call:",func)

    return log

@decoFunc1
def test1():
    print("aaa")

@decoFunc2
def test2():
    print("bbb")

if __name__ == "__main__":
    print("----- test1() -----")
    test1()

    print("----- test2() -----")
    test2()

■ 実行結果

----- test1() -----
call: <function test1 at 0x022944B0>
aaa
----- test2() -----
bbb
call: <function test2 at 0x022944F8>


文字列出力処理しか書いていない test1()、test2() 関数に関数デコレータによって print("call:",func) の処理が追加されていることが確認できます。

以上です。

[ 環境情報 ]
Windows 7 SP1
Python 3.4.3