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) の処理が追加されていることが確認できます。
以上です。