#デコーダについて
関数を装飾するとか、よく分からなかったので、自分で検証しました。
また、ふわっとしていますが、覚書として書きます。
deko.py
def deko(func): #デコレータ
def tent():
print("This")
result = func() #これはpen()のこと
print("a")
return result
return tent
@deko
def pen():#デコレーションされる関数
print("is")
return "Pen"
if __name__ == "__main__": #deko.pyで直接呼ばれた場合、Pen関数をプリントします
print(pen())
>>>This
>>>is
>>>a
>>>Pen
1.@が付いている関数(今回だとpen())が実行される際に、print("is")ではなくdeko(func)が実行されます
2.deko(func)の中のfuncは、pen()の関数が実行されます
3.deko(func)の関数が終了すると、pen()に戻って来ます
4.最後にpen()のreturnが返されます