0
1

More than 3 years have passed since last update.

デコレーター1

Last updated at Posted at 2020-01-11
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
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1