Pythonでデコレータを使う方法

Pythonには他の言語(Javaなど)と同様にデコレータ機能を利用することができます。

デコレータは「@」の後ろに独自の名前をつけて利用することができ、既存の関数を修正することなく効率的に機能を付加(装飾)することができます。

デコレータはその名の通り「装飾する人(もの)」であり関数などを外部から装飾するのに用いられます。

スポンサーリンク

Pythonでデコレータを使う方法

Pythonではデコレータに「@」の後ろに独自の名前をつけて利用することができます。

ex. @sample_deco

作成したデコレータは装飾したい関数の前に記述します。

@f_trace
def test( x, y ):

この例では「test」という関数を「f_trace」というデコレーターで装飾します。

デコレータのソースコード

以下に具体的なデコレータを利用したソースコードです。

よくある関数の呼び出し・終了を監視する処理をデコレータとして作成し、ログとして表示させてみます。

上記ソースで

  • 「@f_trace」は関数にデコレータを設定しています。
  • def f_traceはデコレータの名前を宣言しています。引数のfuncは呼出元の関数です。
  • def get_function_traceはデコレータの具体的な処理を行っています。
  • func( *args, **kwargs )は呼出元の関数を実行しています。

実際の動作としては

  1. デコレータの処理内で開始のログが表示される。
  2. 呼出元の関数が実行される
  3. デコレータの処理内で終了のログが表示される。

という順番で処理が実施されています。

実行結果は以下の通りになります。

まとめ

Pythonでデコレータを上手く利用できると非常に大きなアドバンテージを持ってコーディングすることができるようになります。

ぜひ、いろいろなデコレータを作成して効率の良いプログラム開発を目指してください。

以上、Pythonでデコレータを使う方法でした。

タイトルとURLをコピーしました