猫型エンジニアのブログ

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

デコレータ その2

デコレータを用いた関数の動作変更

 次にデコレータにデコレートしたい関数を引き渡すことで、関数実行時の動作を変更させてみます。そのために、デコレータの中で関数を引数として受け取ったときの動作の処理に関して記述します。

 以下の例では、デコレータのprint_is_a_languageがprint_python関数をラッピングすることで、print_python実行時の出力に、"is a language"が追加されています。

#deco3.py
def print_is_a_language(function):
    def _add_string():
        function()
        print "is a programing language."
    return _add_string

@print_is_a_language
def print_python():
    print "Python"

print_python()

実効結果

# python deco3.py
Python 
is a programing language.