菜鸟学习之路:Python装饰器
装饰器
一开始学到这装饰器,挺难理解的,很绕。多扩一下脑容量吧~
def outer(origin):
def inner(*args,**kwargs):
res = origin(*args,**kwargs)
return res
return inner
@outer
def func():
pass
func()
粗浅的一些解读
- 在批量需要进行扩展(且不改动原函数的情况下,用装饰器是相当棒的)
- 加了@的话,就等于是outer(func)=func
- 首先由于outer(func)=func,就优先执行outer函数
- 由于func是以参数的形式传入的,所以origin = func
- 往下走,开辟了inner内存空间,走到了return inner
- func()执行,因为outer(func)执行后返回了 inner。所以func又等于了inner,执行inner()
- func等于inner,又等于origin
- 在inner函数内运行,res = origin(*args,**kwargs)其实就是相当于原来的func函数在执行。
- 说的不对请指正。