python装饰器--原来如此简单,什么是装饰器 python

  python装饰器--原来如此简单,什么是装饰器 python

  

  首先,什么是装饰器?

  官方的解释是:

  Decorator是一个用于管理和调用函数和类的可调用对象,也就是说可以分为函数装饰器和类装饰器。

  我自己普及过这个定义函数,不然就更看不懂了。其实我有一句更概括的话可以解释装修工:

  Decorator重构被修饰的对象(函数,类),调用对象时可以执行重构的行为,而不改变原来的对象。

  你可能在这里很迷茫,无法理解。

  没事的。让我们慢慢来!

  首先,你必须知道decorator的语法。

  定义装饰师(f):

  定义包装器(x,y):

  返回x y

  返回包装

  @装饰者

  定义函数(x,y):

  返回1

  Func(3,4)好吧,看看这段代码,根据上面的内容,你可能会有几个问题:

  一、decorator是什么意思?

  第二,这里重建的行为是什么?

  3.整个装修的行为或过程是怎样的?

  让我们看看上面的代码。显然,据说装饰器是一个可调用的对象。这样可以吗?上面的装饰器是一个函数。

  重构是什么行为?

  上述代码的重构行为,意味着func的执行代码被wrapper的执行代码替换,即代码的最终输入是7而不是1。

  其实以上两个问题都是扯淡。我们解决了第三个问题,自然就明白了!

  好了,我们继续读之前先记住一句话:

  装饰器本身接受被装饰对象,装饰器返回的可调用对象接受被装饰对象的所有参数。

  一定要仔细阅读这句话,理解并记住!

  在上面的代码中

  装修工是:装修工

  返回的可调用对象是:wrapper。

  要装饰的对象是:func

  好吧,你先把这个装好。你去看看这个函数的执行过程。

  当然,这时你会有另一个疑问:

  调用func(3,4)时发生了什么?

  此时:返回的可调用对象(包装器)给了func,你也可以理解为当前的func代码是

  定义函数(x,y):

  X y此时的func根本不是自己定义的func。是不是某种意义上的重构!

  你明白什么是室内设计师吗?应该是!

  但是我们还没有结束,因为我想让你彻底明白什么是装修工!

  我们之前说过,不仅有函数装饰者,还有类装饰者。然后我们来看看类装饰器是如何工作的。这里还是要贴上一段。别忘了!

  装饰器本身接受被装饰对象,装饰器返回的可调用对象接受被装饰对象的所有参数。

  班级装饰者:

  def __init__(self,f):

  self.func=f

  def __call__(self,x,y):

  返回self.func(x,y) 1

  @装饰者

  定义函数(x,y):

  返回x y

  func(3,4)

  #想想这个时候的结果?我们一步步来分析吧,

  首先,我们说装饰器只接受被装饰的对象作为参数,这意味着有

  装饰者(功能)

  #此代码对应于第一句话

  #接下来是

  func(3,4)

  #这句话是否触及__call__方法?

  #接下来是第二句:返回的可调用对象接受被修饰对象的所有参数。

  # So 3,4被传递给__call__方法

  #此时的func是什么?

  返回self.func(x,y) 1

  #也就是说,结果是8,而不是7。接下来,让我们来看看一些困难的事情:

  定义装饰师(f):

  定义包装器(自身,x,y):

  返回自己的名字x y

  返回包装

  C:级

  Name=地球

  @装饰者

  定义方法(x,y):

  返回x y

  ins=C()

  Myname=ins.method (line , sun )想想这个答案是什么?

  如果能想出来,基本就能明白什么是装修工了!

  推荐:以上《Python教程》是python decorator是什么的详细内容。其他相关文章请多关注盛行的IT软件开发工作室!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: