总结
Day22:参数注解
1.装饰器在不同场景下的使用
带参装饰器:不返回包裹函数
-
装饰器返回的并不是包裹函数,而是直接返回原始函数,这种情况只能在调用原始函数之前做一些功能增强;
-
如果返回包裹函数,不仅在调用函数之前做功能增强,调用函数之后也能执行功能增强;
不带参装饰器:不返回包裹函数
- 装饰器同样是直接返回被装饰函数本身,在原始函数之前做一些事情;
函数装饰器装饰类:返回原始类本身(不带参数)
- 在调用一个类之前给这个类封装一些属性和方法,然后调用这个类时就可以直接使用这些方法和属性;
函数装饰器装饰类:返回原始类本身(带参数)
- 在带参装饰器第一次调用的时候只是一个简单函数调用,返回的那个函数才是正真的装饰器,装饰器装饰了作为参数传递给它的那个类,然后这个参数绑定了一个属性,调用这个参数的类变量,就是第一次简单函数调用所带的参数;
类装饰器
-
类装饰器顾名思义用类写的装饰器,类可以装饰类,也可以装饰函数;
-
使用类装饰器可以通过继承的方式扩展类装饰器的行为;
2.什么是参数注解
- 函数中间使用 ''' '''包裹起来的注释说明就是参数注解;
3.使用参数注解的好处
-
参数注解可以避免动态语音的弊端;
-
可以对函数的参数进行类型注解和对函数的返回值进行类型注解;
-
参数注解只对函数参数做一个辅助的说明,并不对函数参数进行类型检查;
4.Functools模块的使用
-
指那些作用于函数或者返回其它函数的函数,通常只要是可以被当做函数调用的对象就是这个模块的目标;
-
lru_cache装饰器的作用就是把计算结果保存在内存中,下一次有同一个参数传入的话就不会再次进行计算;