python中装饰器的原理及用法

版权声明:本文为博主原创文章,未经博主允许不得转载。 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的装饰器的主要作用在:原函数、对象的加强,相当于重新封装,是有在函数调用的情况下才会执行。

猜你喜欢

转载自blog.csdn.net/wzg_inspur/article/details/82458385