zoukankan      html  css  js  c++  java
  • python装饰器

    python装饰器可以理解为函数作为另外函数的参数

    这是函数式编程的特征

    举个例子:

    def star(func):
        print("star")
        def inner(*args, **kwargs):
            print("*" * 30)
            func(*args, **kwargs)
            print("*" * 15)
        return inner
    
    def percent(func):
        print("percent")
        def inner(*args, **kwargs):
            print("%" * 30)
            func(*args, **kwargs)
            print("%" * 15)
        return inner
    
    @star
    @percent
    def printer(msg,msg2):
        print(msg,msg2)
    printer("Hello","World")
    
    percent
    star
    ******************************
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    Hello World
    %%%%%%%%%%%%%%%
    ***************

    从上面的执行过程可以看出,函数调用过程

    @star
    @percent
    def printer(msg,msg2):
        print(msg,msg2)
    
    相当于
    def printer(msg):
        print(msg)
    printer = star(percent(printer))
    

    如果调整装饰器位置,执行顺序也会相应改变

    @percent
    @star
    def printer(msg,msg2):
        print(msg,msg2)
    printer("Hello","World")
    
    star
    percent
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    ******************************
    Hello World
    ***************
    %%%%%%%%%%%%%%%

      

      



      

  • 相关阅读:
    51单片机入门(三)
    51单片机入门笔记(二)
    51单片机入门笔记
    团队项目-需求分析报告
    团队项目-选题报告
    第一次结对编程作业
    第一次个人编程作业
    第一次博客作业
    tomcat的安装和配置
    循环
  • 原文地址:https://www.cnblogs.com/idvcn/p/8571674.html
Copyright © 2011-2022 走看看