个人觉得装饰器就是Python对闭包的一种的语法糖。
可以灵活抽离出一些雷同代码,通过装饰器方便地调用,使得程序更加简单专注于逻辑的处理。
例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| def check_data(func): def check(*args, **kwargs): print('in decorator') print(args) print(kwargs) func(*args, **kwargs) return check
@check_data def echo_name(name): print(name)
echo_name(name='jack') print('--------') echo_name(name='bob')
|
结果
1 2 3 4 5 6 7 8 9
| in decorator () {'name': 'jack'} jack -------- in decorator ('bob',) {} bob
|