装饰器执行顺序

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
def A(fn):
print("A - 2")

def run():
print("A - 3")
fn()
print("A - 9")

return run


def B(fn):
print("B - 1")

def run():
print("B - 4")
fn()
print("B - 8")

return run


def C(fn):
print("C - 0")

def run():
print("C - 5")
fn()
print("C - 7")

return run


@A
@B
@C
def func():
print("func - 6")


if __name__ == '__main__':
func()
1
2
3
4
5
6
7
8
9
10
C - 0
B - 1
A - 2
A - 3
B - 4
C - 5
func - 6
C - 7
B - 8
A - 9