Pythonのアットマーク演算子は、デコレータと呼ばれる特殊な機能を表します。デコレータは、既存の関数やクラスに新たな機能を追加するための機能です。
デコレータの基本
デコレータは、関数定義の先頭にアットマーク演算子@
がついていることがあります。これは、既存の編集できない関数に「機能を追加」する機能を持ちます。一般的な使用シーンとしては、ライブラリの関数に機能を追加したいシーンが挙げられます。
また、自身でクラスメソッドやスタティックメソッドを定義する際には、@classmethod
や@staticmethod
と記述することもPythonでは一般的です。
@デコレータ名
def デコレートされる関数名:
# 何らかの処理
デコレータの例
以下のコードではデコレータを使って関数の出力の前後に開始と終了の出力を追加しています。
# デコレータ
def decorator(func):
def wrapper(*args, **kw):
print('デコレーター 開始')
func(*args, **kw)
print('デコレーター 終了')
return wrapper
# アットマーク演算子を使ってデコレーターを付与
@decorator
def func():
print('func 実行')
# 実行
func()
実行結果は以下の通りです。
デコレーター 開始
func 実行
デコレーター 終了
このようにアットマーク演算子を用いてデコレーターを付与することで関数に新たな処理を追加することが可能となります。
まとめ
Pythonのアットマーク演算子は、デコレータと呼ばれる特殊な機能を表します。デコレータは、既存の関数やクラスに新たな機能を追加するための機能です。使う場所は局所的かもしれませんが、知ってて損はない機能だと思います。