Python多层装饰器执行顺序
发布日期:2021-07-01 06:08:27 浏览次数:3 分类:技术文章

本文共 941 字,大约阅读时间需要 3 分钟。

一层装饰器

# -*- coding: utf-8 -*-def func1(func):    print("func1-1")    def inner1():        print("inner1-1")        func()        print("inner1-2")    print("func1-2")    return inner1@func1def func():    print("func")# 第一步改变函数指向# 相当于 func1(func) -> inner1# func1-1# func1-2# 脚本执行的时候就动态添加了func 的指向,现在func指向inner1# 第二步,执行函数,相当于执行内部函数# func()# 相当于 func1(func)() -> inner1()# func1-1# func1-2# inner1-1# func# inner1-2

两层装饰器

def func2(func):    print("func2-1")    def inner2():        print("inner2-1")        func()        print("inner2-2")    print("func2-2")    return inner2@func2@func1def func():    print("func")# 相当于# func2(func1(func))  -> func2(inner1)  -> inner1 + inner2# func1-1# func1-2    -> inner1# func2-1# func2-2    -> inner2# 第一步,按照叠放顺序下到上逐层添加func()# 相当于# func2(func1(func))()# func1-1# func1-2    ->inner1# func2-1# func2-2    ->inner2# inner2-1# inner1-1    ->inner2# func# inner1-2# inner2-2    ->inner1# 第二步执行的时候从内向外,逐层执行

转载地址:https://pengshiyu.blog.csdn.net/article/details/103440691 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Python字符串f-string使用大括号{}
下一篇:Python数据库操作Orator-orm

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年04月30日 18时27分00秒