mozyのかきおき

mozyの読書感想文や思考置き場

Pythonのデコレーターとは

f:id:mozy_ok:20181111202856j:plain

経緯

プログラミングに関して教えていたところPythonのデコレーターってなんやねんって聞かれたのでメモ

デコレーターとは

ある関数があったらそれを修飾して使えるようにするって概念がデコレーターで、これを使うことで、既存の関数の処理の前後に自分の好きな処理を付け加えることができるのがメリットだと思う。
そうすると、どっかのライブラリが提供している関数を呼んだときに自動的に実行される処理を追加できるとか、そういう便利なことができる概念って感じ。

使い道

なので使い道として例をあげると、
ある適当な文字列から、記号をのぞいて、大文字の英字列が欲しいなぁって気分だとしよう。
( men:ta%:abc から MENTAABC を取得したいってこと)

んで、どっかのライブラリが文字列から記号を消して文字だけを返してくれる機能を提供しているとして、それを使うと
men:ta%:abc から mentaabc が取得できる。

それに、文字列を大文字に変換する関数デコレーターを作って
mentaabc から MENTAABC が手に入ってやったねって感じ。

こんな感じに、自分でライブラリを拡張するみたいな感覚で使ったりする

追記
開始時間と終了時間をログに出す処理のデコレータを作成して、対象の処理複数個にあてるてのも使いどころとしてあると、おしえてもらった。
めっちゃ便利や.

参考

Pythonのデコレータについて - Qiita