目标:
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)
使用方法图示:
注意事项:
1:test = function_out(test) 前后两个test代表的函数地址是不一样的 前面test代表的是闭包内层函数的地址,后面test代表的是test函数的内存地址!
2:闭包内的 func()函数执行的就是待扩展的函数 test()