首先奉上几篇写得很好的博文:
刘江的博客教程:
Python 装饰器
廖雪峰的官方网站:
Python 装饰器
理解 Python
装饰器看这一篇就够了
以下是本人写的例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| def outermost(form): print(form) def outer(func): def inner(*args, **kwargs): print("第一个装饰器!") value = func(*args, **kwargs) return value return inner return outer
def outermost2(name): print(name) def outer2(func): def inner2(*args, **kwargs): print("第二个装饰器!") value2 = func(*args, **kwargs) return value2 return inner2 return outer2
@outermost(form="函数功能:求两个数的立方和") @outermost2(name="代码由chubbylhao编写")
def foo(a, b, *, c=2): res = a**c + b**c print("计算结果是%d" % res) return res**2
bar = foo(1, 2, c=3) print("计算结果的平方是%d" % bar)
|
输出的结果是:
1 2 3 4 5 6
| 函数功能:求两个数的立方和 代码由chubbylhao编写 第一个装饰器! 第二个装饰器! 计算结果是9 计算结果的平方是81
|
在不清楚(或忘记)装饰器的用法时,回头跑一跑上面的代码就都清晰了
~~多写写测试代码,检查逻辑问题