こんにちは、まさかめです!
今回はpythonにおけるデコレータというものについて説明していきます。
まさかめ
最初はとっつきにくいかもしれないけど、ゆっくり理解していこう!
デコレータとは
Pythonにおけるデコレータとは、関数を修飾するための関数です。
関数の直前に”@デコレータ名”を書くことで、
関数に対して追加の処理を行ってくれるイメージです。
@デコレータ
関数
デコレータの中身
さきほど、デコレータは関数を修飾するための関数とお伝えしました。
つまりデコレータも関数ということであり、
“@デコレータ”という表記は関数に対して関数を使用する際に可能な
短縮表現というわけです。
まさかめ
つまり、@デコレータという書き方と、関数を2つ並べる書き方は同じ内容ってことだね!
さて、以下で具体例を見ていきましょう。
def sample():
print('Hello World!')
sample()
この実行例では、当然Hello World!が出力されます。
def deco(func):
def wrapper(*args, **kwargs):
print('======= deco_test =======')
func(*args, **kwargs)
return wrapper
@deco
def sample():
print('Hello World!')
sample()
今度は上記の実行結果ですが、以下のようになります。
======= deco_test =======
Hello World!
この実行例は、sampleという関数を引数にdecoという関数が実行されています。
そのため、Hello Wordl!という出力の前に======= deco_test =======が表示されたわけです。
まさかめ
decoの引数になっている*args, **kwargsは以下の記事を参照してね!
まとめ
今回はPythonにおけるデコレータを説明しました。
デコレータの表記方法は一見難しそうですが、
慣れてしまえば非常に便利なものなので、
ぜひ一度しっかりと理解して使えるようにしましょう!