Python

【Python】デコレータとは?仕組みや便利なライブラリを紹介!

こんにちは、まさかめです!

今回は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におけるデコレータを説明しました。

デコレータの表記方法は一見難しそうですが、

慣れてしまえば非常に便利なものなので、

ぜひ一度しっかりと理解して使えるようにしましょう!