装饰器

2019-04-25 06:54:57来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

一、装饰器的作用:不想修改函数的调用方式,但是还想在原来的函数前后添加功能;

二、原则:

开放封闭原则:

开放:对扩展是开放的

封闭:对修改是封闭的

三、语法糖:@装饰器名,紧接着被装饰函数

没有使用语法糖

def qqxing(f):#装饰器
    def xxc(*arges,**kwargs):
        x=f(*arges,**kwargs)#被装饰函数ssl()
        return x
    return xxc
def ssl(a,b):
    s=a+b
    print(s)
    return 'jisuanchenggong'
ssl=qqxing(ssl)
print(ssl(1,2))
#3
#jisuanchenggong

使用语法糖:

def qq(f):
    def cc(*arges,**kwargs):
        ret=f(*arges,**kwargs)
        return  ret
    return  cc
@qq#语法糖
def dd(a,b):#被装饰函数
    print('1242365756',a**2,b)
    return 'dsfggyhuieart'
print(dd(1,2))
#1242365756 1 2
#dsfggyhuieart

 进阶:

def ger1(ff):#1ff-->func
    def qqs1():#4
        print('hello1')#11
        ff()#12  执行func()
        print('hi1')#14
    return qqs1#5
def ger2(ff):#ff-->qqs1
    def qqs2():#7
        print('hello2')#9
        ff()#10  执行恰恰是()
        print('hi2')#15
    return qqs2#8
@ger2#6   func=ger2(func)==>qqs2
@ger1#3  func=ger1(func)==>qqs1
def func():#
    print('hhhhhhhhhhhhh')#13
func()#func-->qqs2

结果:


原文链接:https://www.cnblogs.com/jcb9426986/p/10753268.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:python迭代器和生成器

下一篇:python模拟登陆Github示例