装饰器
装饰器本质就是函数,类似迭代器、生成器。装饰器就是修饰其他函数,为其他函数添加附加功能
功能实现,就是把函数扔到另个函数内部晃荡一圈,自身没改变,但是另个函数的功能在中间的时候实现了。
原则:1、不修改被修饰函数的源代码 2、不修改被修饰函数的调用方式 添加新功能,原函数该是什么样还是什么样
开放封闭原则:一旦程序运行了,比如视频网站正在运行,那么想要添加新功能,又不能关站,现在程序源代码是稳定的,就是封闭的不需要改的,如果修改可能会引起连锁问题。那么开放的原则就是用修饰器来添加新功能
装饰器=高阶函数+函数嵌套+闭包
高阶函数
一个函数可以作为参数传给另外一个函数,或者一个函数的返回值为另外一个函数(若返回值为该函数本身,则为递归),满足其一则为高阶函数。
1、函数接收的参数是一个函数名 2、函数的返回值是一个函数名 满足任意一个就是高阶函数
高阶函数满足不了装饰器的功能,因为高阶函数会在中间执行一遍函数,这样的话 函数就等于执行了两遍
函数嵌套
是在函数中又定义了一个函数,叫函数嵌套