猫型エンジニアのブログ

プログラム/ネットワーク系の技術関連をまとめたページです 

デコレータの具体例

デコレータの使い方

 関数の実行前と実行後にデバッグ目的に関数名をログに出力させるのが目的です。プログラムが使用するすべての関数の、呼び出し時と終了時にログ表示の実行は大変です。そのためデコレータを利用しています。

#log.py

import logging
logging.basicConfig(level=logging.INFO)

def log_deco(f):

    def wrapper(*args, **kw):
       logging.info("function [%s] starts.", f.__name__)
       result = f(*args, **kw)
       logging.info("function [%s] end. ", f.__name__)

       return result

    return wrapper

@log_deco
def sample_func():
    print "hello, python."

sample_func()

実行結果

# python log.py
INFO:root:function [sample_func] starts.
hello, python.
INFO:root:function [sample_func] end.