1
def print_info(func):
def wrapper(*args, **kwargs):
print('start')
result = func(*args, **kwargs)
print('end')
return result
return wrapper
def sum(a, b):
return a + b
f = print_info(sum)
r = f(10, 20)
print(r)
1の実行結果
start
end
30
print_info関数がデコレーターで、
sum関数をデコレートしている。
1の書き方だと分かりにくいので
以下の様に書いた方がわかりやすい。。。
またデコレーターは再利用できるので、
それを踏まえて。。。
2
def print_info(func):
def wrapper(*args, **kwargs):
print('start')
result = func(*args, **kwargs)
print('end')
return result
return wrapper
@print_info
def sum(a, b):
return a + b
@print_info
def sub(a, b):
return a - b
print(sum(10, 20))
print(sub(90, 20))
2の実行結果
start
end
30
start
end
70