定义:本质是函数,(装饰其他函数)就是为其他函数添加附加功能
原则:1.不能修改被装饰函数的源代码
2.不能修改被装饰函数的调用方式
二.实现装饰器知识必备技能:
1.函数即“变量”
2.高阶函数
a.把一个函数名当做实参传给另外一个函数(在不修改被装饰函数源代码下为其添加功能)
b.返回值中包含函数名(不修改函数的调用方式)
3.嵌套函数
高阶函数 +嵌套函数=》装饰器
2.1函数即“变量”(一切皆对象)
在 python中,一切皆对象,变量是对象,函数是对象,类是对象,所有的一切都是对象。如下图所示,这里定义函数func,于是内存中就开辟属于func的内存空间,写入func的函数功能。随后在解释器上输入func函数的函数名,这时会返回一串指针地址,在python中所有的对象都会对应的指针地址,即指向内存中func函数的位置。如果在func函数名后加上(),这就说明func根据指针地址调用了func函数。
2.2高阶函数
变量可以指向函数,函数的参数能接受变量,那么一个函数可以 接受另一个函数作为参数,这种函数称为高阶函数。
如图定义func函数有x,y,f三个参数,执行func函数时将实参abs传形参f,func函数最后return两数的绝对值和
2.3嵌套函数
嵌套函数就是在一个函数内声明一个函数再调用
三装饰器初成
四。装饰器小成
以上的test只是刚好装饰没有返回值的函数,下面可以装饰存在返回值的函数
五.装饰器大成
此处模拟网站不同登陆方式的装饰器,使用一个装饰器,对不同的函数的附加不同的功能。 Home 函数使用密码登陆方式, bbs 函数使用另一种登入方式