Python3発展 デコレータ

デコレータ

 

デコレータは入力として関数をとり、他の関数を返す関数です。

 

デコレータを実装するために次のものを使って表します。

 

次のプログラムはこのようなデコレートを行います。

func()関数

  • 関数を 仮引数a に渡し、戻り値として newfunc という関数オブジェクトを呼び出し元に返す。

デコレータ newfunc()関数

  • それぞれ仮引数を表示する。
  • * , ** 仮引数に対しての 仮引数a (関数)の処理の結果を表示する。
  • その結果を返す。

 

デコレータの戻り値を代入して使う。

 

手作業でデコレータを使う場合。

 

プログラムの説明

  • 2つの値を足す plus()関数 を定義
  • 実引数:plus (関数オブジェクト)として func()関数 に渡します。
  • 戻り値の newfunc (関数オブジェクト)が 変数 rusult に代入されます。
  • rusult() に実引数を指定すると、newfunc()関数を呼び出したのと同じになります。

 

 

@でデコレータを扱う。

 

デコレートしたい関数名の直前に @ を追加するとデコレータを使えます。

 

 

複数のデコレータ

 

関数に対するデコレータは複数持つことができます。

 

値を自乗して返すプログラムを作ります。

 

@ を使い複数のデコレータを使います。

 

def の真上のあるデコレータから先に実行されていきます。

 

これまでのプログラムです。

 

 

 

フォローする

スポンサーリンク


Python

Posted by pythonista