python知识点(5)-----------装饰器小结

来源:互联网 发布:ubuntu u盘安装工具 编辑:程序博客网 时间:2024/05/29 16:57

装饰器就是对函数或者方法或者类进行修饰

#装饰器#1基本函数def shi1():    print('1')#shi1()#2扩展功能def zs2(func):    print('1')    func()    print('2')def shi2():    print('shi 2')#shi2 = zs2(shi2)#没有返回值就没有接收到#shi2()#3实现函数扩展的功能def zs3(func):#本体函数形参    def inner():        print('1')        func()        print('2')    return inner#打包def shi3():    print('shi 3')#shi3 =zs3 (shi3)#shi3()#4语法糖def zs4(func):#本体函数形参    def inner():        print('1')        func()        print('2')    return inner#打包带走@zs4def shi4():    print('shi4')#shi4()#5带参数的语法糖 返回值def zs5(func):    def inner(a,b):#本体函数的参数的形参 a,b        print('1')        func(a,b)        print('2')    return inner@zs5def shi5(who,who2):#本体函数的参数    print(who,'在和',who2,'打架')#shi5('11','22')#5_2返回值def zs5_2(func):    def inner(a,b):#接收本体函数的参数的 形参 a,b        print('1')        var =func(a,b)#执行本体函数,根据其 实参        print('2')        return var#实现本体函数的返回值    return inner#包1@zs5def shi5_2(who,who2):#本体函数 具有参数    print(who,'在和',who2,'打架')    return 'fhz'#shi5_2('22','11')#resu = shi5_2('22','11')#print(resu)#6收集参数的语法糖def zs6(func):    def inner(*a,**b):#inner接收收集参数 ,形参*a **b        print('1')        func(*a,**b)#形参*a **b        print('2')    return inner@zs6def shi6(*arg,**kwargs):#本体函数 具有收集参数    print(arg,'在和','打架',kwargs)#shi6('小明',one='校长')#7带参数的装饰器def plus(arg):#接收参数arg的实参 ’ss'    def zs7(func):#本体方法形参func        def inner():            if arg =='ss':                print('1')                func()                print('2')            else:                print('3')                func()                print('4')        return inner#包2    return zs7#包1@plus('ss')#传参数为了控制ifdef shi7():    print('shi 7')#shi7()#8装饰器的类参数class Lei:    def f1():#类方法1        print('f1')    def f2():#类方法2        print('f2')def plus8(cls):    def zs8(func):#本体方法形参func        def inner():            cls.f1()            func()#调用本体方法            cls.f2()        return inner#打包2(在包1里面)    return zs8#打包1@plus8(Lei)def shi8():    print('shi 8')#shi8()#9  类装饰器class  Lei8:    def __init__(self,arg):        self.arg = arg#把arg标志传递给对象    def __call__(self, func):        self.func = func#func传递给对象        return self.inner    def inner(self):        if self.arg =='shi':            print ('hello 1')            self.func()#类的func方法            print('hello2')        else:            print('hello 3')            self.func()#类的func方法            print('hello4')@Lei8('shi')#shi 参数为arg 为了判断而特意加的def shi9():    print('shi 9')#shi9()#10 类的装饰器def zs10(cls):#形参为类cls    def inner():        print('hello1')        var = cls()        print('hello2')        return var#返回一个对象,实现实例化的原功能    return inner#打一个包,拿出去@zs10#装饰器zs10class Lei10:    pass#Lei10()#resu = Lei10()#print(resu)#接收到一个对象#11 装饰器的嵌套def zs11_1(cls):    def inner():        print('hello1')        var = cls()        print('hello2')        return var    return innerdef zs11_2(cls):    def inner():        print('hello3')        var = cls()        print('hello4')        return var    return innerdef zs11_3(cls):    def inner():        print('hello5')        var = cls()        print('hello6')        return var    return inner@zs11_1#先执行一个到cls()就向下执行@zs11_2#执行一个到cls()就向下执行@zs11_3#执行一个到cls()就向下执行 直到没有cls(),就一个一个完结def shi11():    print('shi--11')#shi11()


阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 输入编号查询公博币 币安非小号 币安币 币安交易所app 币安怎么交易 币安交易所下载 币安交易平台app 币安下载 币安网交易平台 币安网交易所 玩客币行情 玩客币 玩客币交易平台 玩客币价格 玩客币实时行情 挖客的瓦币值钱吗 充抖币 币市 币快报下载 qq把q币换成余额教程 币币盈 情侣空间农场刷彩虹币 币组词 币赢 广州环市东路附近宾馆 广州环市东路附近酒店 市中区 济南市中区 济南市中区邮编 济南市市中区邮编 市中区邮编 济南市市中区 济南市中区事业单位招聘 枣庄市中区邮编 济南市中区招聘 枣庄市中区网 内江市中区 济南市中区招聘信息 山东省枣庄市市中区邮政编码 长沙市中心医院 武汉市中心医院