• python装饰器


    def home(name):
    print('你又来啦')
    print(name)
    def login(func):
    def inner(name):
    print('pass')
    return func(name)
    return inner
    def login1(a,b):
    def inner(name):

    print('diyipass')
    def wa(*name1):
    a(*name1)
    b(*name1)
    #name(name1)
    return name(*name1)
    return wa
    return inner
    #def login(func):
    # print('pass')
    # return func

    #@login#在不调用任何函数的情况下,这条语句依然会被执行
    #@login
    def DIANNAO(name):
    print('你还来')
    print(name)
    @login1(DIANNAO,home)
    def TV(name):
    print('你来啦')
    return 4

    #@login



    tv=login(TV)#装饰器里面只有一层,直接将功能函数赋给装饰器,
    #让装饰器去执行
    print(tv)
    '''
    传递进去的就是一个内存地址
    '''
    tv('alex')
    p=tv('alex')
    print(p)
    m=login(DIANNAO)
    m('mei')
    o=TV('alex')
    print(o)
    '''
    个人总结,装饰器就是包含,和顺序执行
    有些强大的装饰器框架
    再下次调用的时候只需要写函数就可以啦
    写一个装饰器的成本比较高。
    要调用的时候可以直接调用函数
    '''
    print('邪恶的------')
    t=login1(DIANNAO,home) #返回的inner的内存地址,这个时候没有实例化
    #只是将函数赋给longi1,DIANNAO,home分别表示连个函数
    print(t)#打印出inner函数的内存地址
    p=t(tv)#这个时候也没有进行实例化,将功能函数赋值给装饰器
    print(p)#打印出要执行函数的内存地址
    m=p('alex')#进行实例化
    print('m',m)#打印出返回结果,这个返回结果建议使用
    #return name(*name1),这种模式,这样可以接收功能函数的返回值
    print('你好')
    TV('alex') #直接利用装饰器进行的功能函数的实例化







  • 相关阅读:
    结对
    汉堡 结对2.0
    《构建之法》第四章读后感
    复利计算单元测试
    实验一 命令解释程序的编写
    《构建之法》读后感
    复利计算 2.0
    了解和熟悉操作系统
    学习进度条
    perl的贪婪和非贪婪模式
  • 原文地址:https://www.cnblogs.com/xwl65/p/5186921.html
Copyright © 2020-2023  润新知