三分钟搞懂什么是装饰器
装饰器,顾名思义,装饰某个东西的嘛。但是,装饰的是个啥的,就是一个函数啦,但可不是装饰它让它变得好看,而是在不修改函数的前提下,为函数添加功能。
在这里,我想实现一个能够输出’Hello World’的函数,是不是应该这样写。
def hello():
print("Hello World")
hello()
这时我想到了一个绝妙的点子,为了好看,我要在’Hello World’的前后加上分隔符,那是不是应该这样改一下。
def hello():
print("---")
print("Hello World")
print("---")
hello()
但这时有个问题了,这里我只有一个函数,如果我有一千个函数呢,一个一个改吗?那未免太麻烦了,如果再改坏了函数,那我直接螺旋升天了。这时为了避免这些问题,我们就需要用到装饰器啦。
def 分隔符(function): #为了便于理解就用中文函数了
def 装饰器():
print("---")
function() #把传进来的参数当做函数来调用
print("---")
return 装饰器 #函数也是可以返回的
def hello():
print("Hello World")
hello2 = 分隔符(hello)()
这时是不是可以改成这样了?不不不,装饰器这样只是点到为止,我们可以把第二个函数改成这样。
@分隔符
def hello():
print("Hello World")
hello()
这个@用来告诉解释器,调用这个函数时,不必来找hello()了,来找它的"秘书"分隔符(),这样就实现了不改变函数本身来为函数添加功能。
第一次写博客,写的不好请见谅,救救我这个刚上初一的小朋友吧,谢谢大家。