• python编程系列---多个装饰器装饰一个函数的执行流程


    首先看一个例子

     1 ''' 多个装饰器装饰一个函数 '''
     2 
     3 # 定义第一个装饰器
     4 def set_func1(func):
     5     def wrapper1(*args,**kwargs):
     6         print('装饰内容开始1')
     7         func(*args, **kwargs)
     8         print('装饰内容结束1')
     9     return wrapper1
    10 
    11 
    12 # 定义第二个装饰器
    13 def set_func2(func):
    14     def wrapper2(*args,**kwargs):
    15         print('装饰内容开始2')
    16         func(*args, **kwargs)
    17         print('装饰内容结束2')
    18     return wrapper2
    19 
    20 # 定义第二个装饰器
    21 def set_func3(func):
    22     def wrapper3(*args,**kwargs):
    23         print('装饰内容开始3')
    24         func(*args, **kwargs)
    25         print('装饰内容结束3')
    26     return wrapper3
    27 
    28 
    29 
    30 
    31 @set_func1
    32 @set_func2
    33 @set_func3
    34 def show():
    35     print('Show Run....')
    36 
    37 show()
    38 
    39 
    40 结果如下:
    41 装饰内容开始1
    42 装饰内容开始2
    43 装饰内容开始3
    44 Show Run....
    45 装饰内容结束3
    46 装饰内容结束2
    47 装饰内容结束1
    48 
    49 进程已结束,退出代码 0

    使用简易代码分析执行流程--->实质就是几层函数的嵌套

     1 def wrapper1():
     2     print("wrapper1 start") # 第1步
     3     wrapper2()    # 第2步
     4     print("wrapper1 end")  # 第10步
     5     
     6     
     7 
     8 def wrapper2():
     9     print("wrapper2 start")  # 第3步
    10     wrapper3()  # 第4步
    11     print("wrapper2 end") # 第9步
    12     
    13     
    14 
    15 def wrapper3()
    16     print("wrapper3 start") # 第5步
    17     main_function()   # 第6步
    18     print("wrapper3 end")  # 第8步
    19     
    20 
    21 def main_func()
    22     print("hello Python") # 第7步
    23 
    24 main_func()  # start

    如果你和我有共同爱好,我们可以加个好友一起交流!

  • 相关阅读:
    JavaScript数组方法大全
    梁凤波工作周记3月10号
    JS解析联动JSON数据
    angularjs select 获取选中的值
    外部变量获取Ajax后台返回的参数值(success)
    ionic $ionicModal使用方法
    angularjs select ng-options延迟更新(联动)
    ionic使用iframe范围外部站点
    angularjs select 三级联动
    Ionic start 创建项目报错
  • 原文地址:https://www.cnblogs.com/ywk-1994/p/9502848.html
Copyright © 2020-2023  润新知