一 开放封闭原则
1 对扩展是开放的,允许代码的功能扩展
2 对修改是封闭的,不允许修改源码,并且调用方式也不能改变。
二 装饰器
相当于在原有的函数的基础上添加了一个功能。比如原有的函数getAverage()是求平均值的功能,给它装饰了一个测试函数运行时间的装饰器后,那么再调用getAverage()时,不仅有原有的功能,还会多出一个测试函数运行时间的功能。多个函数可以共用一个装饰器。
标准装饰器:
def wrapper(func): def inner(*args,**kwargs): '''执行被装饰函数之前的操作''' ret = func(*args,**kwargs) '''执行被装饰函数之后的操作''' return ret return inner func=wrapper(func) //先执行右边,会直接返回一个inner函数,即将inner函数名称赋值给func。 func() //此时执行func函数,实际上是执行inner函数,通过万能参数将参数传递给内部的func函数,同时又将内部的func函数的返回值传递给了inner函数。所以没有改变func函数的源码,也没有改变内部调用方式。