python学习_python装饰器是什么

python学习_python装饰器是什么

起首,甚么是粉饰器?

比拟民间的表明是:

粉饰器是用来办理以及挪用函数以及类的一个可挪用工具,也便是说分为函数粉饰器以及类粉饰器

这个界说函数我本人浅显化了一点,否则愈加看没有懂,实在我另有一句愈加归纳综合的话,能够表明粉饰器:

粉饰器便是对于被粉饰的工具(函数、类)停止重构的,其能够正在没有改动本来工具的状况下挪用工具时履行重构后的行动

这里你能够就懵懂了,看没有懂

不妨事咱们渐渐来!!!

起首,粉饰器的语法你一定晓得

def decorator(f):
    def wrapper(x,y):
        return x+y
    return wrapper
@decorator
def func(x,y):
    return 1
func(3,4)

那,看这段代码,你能够依据下面你有多少个疑难:

1、decorator是甚么意义?

2、这里重构的行动是甚么?

3、全部粉饰的行动或许说流程是怎样样的?

咱们看下面那一段代码,很明显,说过粉饰器便是一个可挪用工具,这个没成绩吧,正在下面的粉饰器它便是一个函数。

重构的行动是甚么?

下面的一段代码的重构行动便是讲func的履行代码交换成为了wrapper的履行代码,也便是说,代码的终极输出是 7 而没有是 1。

实在下面的两个成绩是空话,咱们处理了第三个成绩,天然而然的就了解了!

好了,正在持续看以前咱们记着一句话:

粉饰器自身承受被粉饰的工具,粉饰器前往的可挪用工具承受被粉饰工具的一切参数

必定要细心看这句话,了解加影象!

正在下面那一段代码中

粉饰器是: decorator

前往的可挪用工具是: wrapper

被粉饰的工具是 :func

好了,你先正在套这个你去看看这个这个函数的履行流程

固然,这时候候你还会有一个疑难:

当挪用func(3,4)的时分发作了甚么?

此时:前往的可挪用工具(wrapper)给了func,你也能够了解为如今的func的代码是

def func(x,y):
    return x+y

这时候的func就完整没有是本人自身界说的func的,它是否是正在某种意思上算是被重构了!

到这里你是否是了解了甚么是粉饰器,该当是了解了!

不外咱们尚未完毕,由于我要让你完全的理解甚么是粉饰器!

以前咱们说过,没有止有函数粉饰器,另有类粉饰器,那接上去咱们就看看类粉饰器是怎样任务的,我仍是要把以前那段话贴正在这里,你别忘了!

粉饰器自身承受被粉饰的工具,粉饰器前往的可挪用工具承受被粉饰工具的一切参数

class Decorator:
    def __init__(self,f):
        self.func = f
    def __call__(self,x,y):
        return self.func(x,y) + 1
@Decorator
def func(x,y):
    return x+y
func(3,4)
# 你来想一想这时候候的后果是甚么?

咱们来一步步的剖析一下,

起首,咱们说粉饰器只承受被粉饰的工具做参数,也便是说此时有

Decorator(func)
 # 这段代码对于应着第一句话
 # 接上去是
 func(3,4)
 # 这句话是否是震动了__call__办法
 # 接上去便是第二句话:前往的可挪用工具承受被粉饰工具的一切参数
 # 以是3,4就被传送给了__call__办法
 # 此时的func是甚么
 return self.func(x,y) + 1
 # 也便是说后果为8,而没有是7

接上去来点难的看看:

def decorator(f):
    def wrapper(self,x,y):
        return self.name + x + y
    return wrapper
class C:
    name = '土'
    @decorator
    def method(x,y):
        return x + y
ins = C()
myname = ins.method('行','孙')

考虑一下这个谜底是甚么?

能想进去就根本上了解了甚么是粉饰器了!

相关推选:《Python教程》

以上便是python粉饰器是甚么的具体内容,更多请存眷酷吧易资源网别的相关文章!

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

酷吧易资源网 python教程 python学习_python装饰器是什么 https://www.kubayi.com/4874.html

常见问题

相关文章

评论
暂无评论