起首,甚么是装璜器?
比拟民间的诠释是:
装璜器是用来治理以及挪用函数以及类的一个可挪用工具,也就是说分为函数装璜器以及类装璜器
这个界说函数我本人浅显化了一点,否则愈加看没有懂,其实我另有一句愈加归纳综合的话,能够诠释装璜器:
装璜器就是对被装璜的工具(函数、类)进行重构的,其能够正在没有扭转原来工具的状况下挪用工具时执行重构后的行为
这里你可能就懵懂了,看没有懂
不妨事咱们缓缓来!!!
起首,装璜器的语法你一定晓得
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装璜器是甚么的具体内容,更多请存眷资源魔其它相干文章!
标签: python教程 python编程 python使用问题 python装饰器
抱歉,评论功能暂时关闭!