装饰器
python装饰器就是 用于扩展原本函数功能的一种函数,这种函数返回值也是个函数。不改变原本函数代码的基础上 添加 新的功能
我们原函数定义为 alter()。返回值赋给原函数 ,效果为执行 输出 语句 “这里是原函数”
定义装饰器函数 add(f1) 嵌套一个函数alter2()。add(f1)函数效果为空 ,里面的 函数 alter2()效果为执行 输出语句 “装饰器函数” 返回值赋给原函数
执行。我们可以理解为 把原函数 赋值给add()的参数f1,然后执行add(alter),这时候我们执行的 是函数add(),并没有执行里面函数 alter2(),所以这时候我们可 以这样写:
方法一
f = add(alter) #这时候我们执行到了add(alter) 函数。没有执行 alter()
f() #这时候执行了alter2()函数
这里是把函数 add(alter)赋值给f,在执行
这时候原函数会执行 2 次
这时候优化方法为 二
方法二
我们可以直接把 add(alter)赋值给alter:
alter = add(alter)
alter()
这时候是执行不看结果的 ,我们这里可以 把原函数 alter() 函数赋值 给 f1() 参数 所以。我这里在函数alter2()函数中调用 f1()
这时候:
在上述代码中。比较混乱。我们这里优化一下。
在python中 。我们写好装饰器后,在给原函数优化的时候,只需要在原函数之前加上 @add ,这是 python 中的优化写法