zoukankan      html  css  js  c++  java
  • python装饰器见解笔记

    def zsq(fun):
        def zsq_n(*args,**kwargs)
            print('这是装饰器需要运行内容')
            r = fun(*args,**kwargs)
            print('在被装饰函数执行完成下运行显示')        
            return r
        return zsq_n
    
    @zsq
    def a():
        print('这是一个被装饰的函数')
    
    a()
    >>>这是装饰器需要运行内容
    >>>这是一个被装饰的函数
    >>>在被装饰函数执行完成下运行显示

    装饰器执行操作的顺序和被装饰函数在装饰器内部位置决定


    上面这一个是不需要装饰器参数就能执行那么需要参数的装饰器怎么写呢?

    def zsq(装饰器形参date):
        def zsq_n(fun):
            def zsq_nn(*args,**kwargs)
                print('这是装饰器参数',data)
                print('这是装饰器需要运行内容')
                r = fun(*args,**kwargs)
                print('在被装饰函数执行完成下运行显示')        
                return r
            return zsq_nn
        return zsq_n
    
    @zsq('2019.4.17')
    def a(x+y):
        return x+y
    
    a(5,6)
    >>>这是装饰器参数2019.4.17
    >>>这是装饰器需要运行内容
    >>>11
    >>>在被装饰函数执行完成下运行显示    

    只不过是在装饰外部套一层皮.

    注意当不需要装饰器参数时,@zsq,

    需要时是@zsq(参数)


    如果还看不动那么给个比方

    def 大臣(太子名):
        def 做皇帝的位置(太子的能力):
            r = 太子执行的能力
            返回太子的能力r(包装)
        皇帝的能力
    
    @大臣
    def 太子名():
        执行的太子能力

    就像是一个国家皇帝挂了,太子无能为力,于是忠心的大臣扶持太子上位,一共组成皇帝的能力,

    pass

    >>>>>>>>>>>>>>>>>>>

  • 相关阅读:
    商业研究(10):比呀比-海淘电商-海外正品直邮-高品质跨境购物平台
    商业研究(10):比呀比-海淘电商-海外正品直邮-高品质跨境购物平台
    POJ 2923 Relocation
    ZJU 2425 Inversion
    HDU 1394 Minimum Inversion Number
    POJ 1787 Charlie's Change
    HDU 2191 悼念512汶川大地震
    Gym
    HDU 2069 Coin Change
    UVA 674 Coin Change
  • 原文地址:https://www.cnblogs.com/zengxm/p/10726596.html
Copyright © 2011-2022 走看看