デコレーターの書き方
from functools import wraps
def デコレーター名(func):
@wraps(func) # なくても動くがある方よい
def wrapper(*args, **kwargs): # どんな引数をとってもいいようにすると良い
# デコレーターとしての機能を記述
return func(*args, **kwargs) # funcの実行結果を返す
return wrapper
デコレーターの使い方
@デコレーター名
def デコレーターを使用する関数():
処理を書く
# 実行
デコレーターを使用する関数()
実行時間を計測するデコレーター例
import time
from functools import wraps
def stop_watch(func):
@wraps(func)
def wrapper(*args, **kwargs):
start = time.time()
result = func(*args, **kwargs)
print(f"実行時間(sec):{time.time()-start:2f}")
return result
return wrapper
@stop_watch
def my_sleep(sec):
time.sleep(sec)
print(f"{sec}秒待ちました")
my_sleep(10)
10秒待ちました
実行時間(sec):10.016692