目标:
    1:掌握python内装饰器的使用场景
    2:掌握工作写代码的准则
    3:掌握装饰器的语法及使用方法

    一:python内装饰器的使用场景

    答:装饰器可以在不改变函数源代码的前提下为函数增加新的功能

    装饰器的使用前提:

    1:有一个待扩展功能的普通函数(不改变这个函数的源代码增加新功能)
    2:装饰器要依赖于闭包才能实现扩展新功能(用于扩展函数新的功能)

    二:工作写代码的准则

    答:掌握开放封闭原则,即以前写好的功能尽量不要修改其源代码(封闭),但是可以对以前写的功能进行扩展也就是开放(装饰器)


    三:装饰器的语法及使用依赖和使用方法

    语法:@闭包内的外层函数名

    示例:

    @function_out
    def test( ):
    xxxx
    Xxxx

    其中function_out是闭包中的外层函数名,test()是待扩展功能的普通函数

    使用依赖:

    1:必须要有一个待扩展功能的函数
    2:必须要有一个闭包,为待扩展函数在不修改源代码的前提下增加功能
    3:在装饰器模式下,原来的闭包就被称为装饰器了

    注意事项:
    1:闭包的外层函数必须要有参数,用于待扩展函数的函数名传递
    2:上方的 @function_out 等价于 test = function_out(test)


    使用方法图示:

    image.png


    注意事项:

    1:test = function_out(test) 前后两个test代表的函数地址是不一样的 前面test代表的是闭包内层函数的地址,后面test代表的是test函数的内存地址!

    2:闭包内的 func()函数执行的就是待扩展的函数 test()