【Python-装饰器】装饰器的运行顺序以及运行时机

在这里我们需要使用到https://pythontutor.com/render.html#mode=display这个网站。该网站可以一步一步的输出整段代码的运行流程。
一些名词的定义:
“Global frame” 是指程序运行时的全局环境,在这个环境中,全局变量、函数和其他重要的程序元素被定义和存储。这个全局环境可以被程序中的任何部分访问到,并且对程序的整体行为起着重要的作用。

可以使用vscode的debug工具或者pythontutor网站来查看装饰器的运行逻辑

案例示例:registration.py

registry = []  # 1 
def register(func):  # 2 11  
 print(f'running register({func})') # 5 12
 registry.append(func)  # 6 13
 return func # 7 14
@register # 3 8
def f1(): # 4
 print('running f1()') # 23
@register # 9
def f2(): # 10 15
 print('running f2()') # 25
def f3(): # 16
 print('running f3()') # 26
def main(): # 17
 print('running main()') # 20
 print('registry ->', registry) # 21
 f1() # 22
 f2() # 24
 f3() # 26
if __name__ == '__main__': # 18
 main() # 19
posted @ 2023-09-01 17:27  白猫打不过黑猫  阅读(63)  评论(0编辑  收藏  举报