day14 开放封闭原则与装饰器

一 开放封闭原则
    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函数的源码,也没有改变内部调用方式。    
原文地址:https://www.cnblogs.com/spacetime-party/p/13047030.html