装饰器的引入
- 我们可以直接通过修改函数中的代码来完成需求,但是会产生以下一些问题:
- 如果修改的函数多,修改起来会比较麻烦
- 不方便后期的维护
- 这样做会违反开闭原则(ocp)
- 程序的设计,要求开发对程序的扩展,要关闭对程序的修改
- 装饰器是一个特殊的闭包函数,即使用的条件是必须是闭包函数
- 使用背景:试想你写了很多程序,一直运行也没啥问题。有一天老板突然让你统计每个程序都运行了多长时间并比较下运行效率。此时如果你去手动修改每个程序的代码一定会让你抓狂,而且还破坏了那些程序的重用性
装饰器的使用
装饰器的几种形式
g?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81MjkwNTU2Nw==,size_16,color_FFFFFF,t_70)
此时,装饰器的参数即带入 fun(s) 函数,而在调用fun(s)时,参数s则变成funner_inner1(*args,**kwarg)的值
pass