装饰器 = 高阶函数+闭包+函数嵌套
高阶函数定义:
函数接收的参数是函数名,或者函数的返回值是一个函数名
函数嵌套:
一个函数内,在重新定义一个函数
闭包:
其实就是作用域的另外一种名词,当前函数调用变量时,本地没有就找
上级。上级函数包含下级函数
def wapper(func): def inner(x,y): print(x+y) func(x,y) return inner @wapper def foo(x,y): print(x-y)
1,将foo内存地址传递到wapper(foo),func接收foo内存地址
2.返回inner内存地址,foo接收 foo = inner
3.执行foo(3,2),就是执行inner(3,2),inner里面的func其实值接收的最开始传递进来的foo的内存地址
装饰器加参数
import time def timmer(func): def con(*args, **kwargs): start_time = time.time() res = func(*args, **kwargs) stop_time = time.time() print('函数运行时间是:%s' % (stop_time - start_time)) return res return con @timmer def test(name, age,sex,money): time.sleep(3) print('函数运行完毕') print(f'name是{name},年纪是{age},性别是{sex},存款是{money}') return '这是test返回值' res = test('zheng', age=18, sex='男') print(res)