个人学习,仅供参考,非专业
装饰器的最大功能:在不改变函数原始代码的情况下为函数添加额外的功能,
这里我们定义一个求和函数 sun
现在我们在不修改函数代码的情况下添加一个输出函数名字的功能
定义一个装饰器
然后使用log修饰sum函数
运行结果
这里发现,原来函数 sum 的名字 变成了 wrapper
实际上装饰器的原理就是将原函数作为一个变量传入装饰函数,最后返回一个新的函数,包含原函数和附加功能
但是当其他地方我们用到我们的原函数sum的时候,sum.__name__就改变了,
为了解决这个问题我们引入工具functools