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

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

  • 相关阅读:
    48 个seo技巧,seo站长必知技巧
    如何提高网站排名经验分享
    SEO影响网站排名因素有哪些
    如何建立一个利于SEO的网站
    HTML 笔记之 HTML 元素的概念
    idea配置springboot项目记录
    课后作业(一)
    团队任务(一)
    团队任务(二)
    软工假期预习作业1
  • 原文地址:https://www.cnblogs.com/zengxm/p/10726596.html
Copyright © 2011-2022 走看看