現在デコレータに関して勉強しています
疑問があるので教えていただきたいです
まずデコレータについて
一般的には関数オブジェクトを引数にとって任意の場所で引数を実行するもの。
で、このデコレータで疑問に思ったのですが、たとえばこのコード、
python
1def hoge(func): 2 cnt = 0 3 def _hoge(): 4 func() 5 print('_hoge') 6 return _hoge() 7 8@hoge 9def fuga(): 10 print('fuga')
この場合、
python
1@hoge 2def fuga(): 3 print('fuga')
このコードは、fuga = hoge(fuga)となるようなのですが、
この場合、定義した時点で実行されることになると思います。
これは今回のように関数内でprint()などを使う時など、勝手に実行されて不便なことがいろいろあると思うのですが、デコレータとはこういうものなのでしょうか。
またこれなら普通に別に関数を作って呼び出すほうが楽だと感じたのですが、どのようなプログラムがデコレータを使う時に最適なのでしょうか。

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。