Pythonには デコレータ という特殊な機能があります。デコレータは、既存の関数に処理を追加実装できる機能で、コード改変なしで利用できます。この機能を使いこなせるようになると、例えば以下のようなシーンで威力を発揮することができます。
- 関数Aがある。これにログ機能を追加実装したくなった。しかし、関数Aのコードは絶対に変更したくない。
デコレータは構造上、複数の関数が絡み合って実現する機能になります。そのため、デコレータを理解するためには、以下の文法をしっかりマスターしていることが重要です。
- 関数内関数
- 引数としての関数
- 戻り値としての関数
- *args
また、デコレータを作る前提として、高階関数の理解も必要です。高階関数とは、関数を変数として扱うことができる関数のことを指します。これを利用すると、「関数に追加処理をする関数」が作れます。
以下に、デコレータと高階関数の基本的な使用例を示します。
def add_fn(f):
def mix_fn():
print('Python')
f()
print('マスターしよう! ')
return mix_fn
@add_fn
def base_fn():
print('デコレータ')
base_fn()
このコードを実行すると、「Python デコレータ マスターしよう!」と出力されます。
以上がPythonの高階関数とデコレータの基本的な説明です。これらの概念を理解し、適切に使用することで、Pythonのコードをより効率的に、そして柔軟に書くことができます。