ということで、付けると引数の値を出力するデコレータのコードを例として書き留めておきます。
from functools import wraps
def print_params(func):
@wraps(func)
def wrapper(*args, **kwargs):
for v in args:
print(v)
for k, v in kwargs.items():
print(k,'=',v)
func(*args, **kwargs)
return wrapper
@print_params
def hoge(a, b, c, d = 'test'):
print('hoge hoge')
hoge(1, [2, 3], { 'first name': 'Taroh', 'last name': 'Yamada' }, d = 'abcd')
結果
1
[2, 3]
{'first name': 'Taroh', 'last name': 'Yamada'}
d = abcd
hoge hoge
functools.wraps は、対象の関数の __name__ や __doc__ が失われないように付けます。
Docker Desktop for Windows/Macでつくるクリーンな開発環境構築入門(Python版) (Amazon)
コメント