版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wzg_inspur/article/details/82458385
要想理解python中装饰器的原理首先要明白一下两点:
1:函数名称是指向函数所在地址的指针
2:装饰器的的作用等价于callfucn=decfucn(callfucn)
这两点在后期的分析中要牢牢的记住。
以一段代码为例:
def decofun(func):
def _deco(a, b):
print("before callfunc() called.")
func(a, b)
print(" after callfunc() called. result: %s" % ret)
return _deco
@decofun
def callfunc(a, b):
print(" %s,%s." % (a, b))
return a + b
callfunc(1, 2)
首先我们把@decofun替换成 callfunc = decofun(callfunc), decofun(callfunc)之后后的返回结果是_deco,是指向_deco函数的指针,也就是说callfunc也是指向_deco函数的指针,callfunc(1,2)即执行的是_deco(1,2)这个函数。这就是python装饰器的原理。
python的装饰器的主要作用在:原函数、对象的加强,相当于重新封装,是有在函数调用的情况下才会执行。