随笔- 310  文章- 1  评论- 0  阅读- 86066 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
def outter_1(func1):
    def inner_1(*args, **kwargs):  # 使用不定长参数
        print("inner_1内容")
        func1(*args, **kwargs)
        print("第一个装饰器-----1")
  
    return inner_1
  
  
def outter_2(func2):
    def inner_2(*args, **kwargs):  # 使用不定长参数
        print("inner_2内容")
        func2(*args, **kwargs)
        print("第二个装饰器-----2")
  
    return inner_2
  
  
def outter_3(func3):
    def inner_3(*args, **kwargs):  # 使用不定长参数
        print("inner_3内容")
        func3(*args, **kwargs)
        print("第三个装饰器-----3")
  
    return inner_3
  
  
@outter_1
@outter_2
@outter_3
def show_1():
    print("show_1")
  
  
show_1()
"""
    多个装饰器加载的顺序
    1.@outter_3:show_1原函数-->outter_3-->func3 = show_1原函数-->show_1指向了inner_3
    2.@outter_2:inner_3-->outter_2-->func2 = inner_3-->show_1指向了inner_2
    3.@outter_1: inner_2-->outter_1-->func1 = inner_2-->show_1最终指向了inner_1
    所以多个装饰器的执行调用过程
    show_1()-->inner_1()-->func1()-->inner_2()-->func2()-->inner_3()-->func3()-->show_1()原
"""

  

结论:从上往下执行

 posted on   boye169  阅读(1)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
历史上的今天:
2023-09-05 nginx配置详解
2023-09-05 flask设置静态文件目录、模板目录
点击右上角即可分享
微信分享提示