装饰器
Posted ychj
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了装饰器相关的知识,希望对你有一定的参考价值。
1、基础知识准备 详见随笔的第二大点
https://www.cnblogs.com/ychj/p/9461550.html
2、具体运行原理
def outer(func):
def inner(*args,**kwargs): ==========>inner 的参数采用万能参数
print("before")
r = func(*args,**kwargs) ===========》Python自动把参数传给func
print("after")
return r ==========> 将原函数的返回值 继续返回
return inner
@outer ==========>@+函数名
def f1(a): 功能: 1、自动执行outer函数并且将其下面的函数名f1当作参数传递
print("f1") 2、将outer函数的返回值,重复赋值给f1
return "fffffff"
具体运行顺序(解释):先把outer函数载入内存,然后运行到@outer时,将f1函数整体赋值给func ,此时func 就是代表老的func函数,同时运行outer函数, outer函数运行的结果就是返回值 inner函数赋值给了f1函数,此时的f1函数就变成了新的innter函数,所以就是将原函数f1 保存在func同时将f1重新赋值新函数这样一个过程
具体的应用就是在不改变原函数的内容的基础之上,调整原函数的具体功能。
以上是关于装饰器的主要内容,如果未能解决你的问题,请参考以下文章