Python多层装饰器执行顺序

简介: Python多层装饰器执行顺序

一层装饰器


# -*- coding: utf-8 -*-
def func1(func):
    print("func1-1")
    def inner1():
        print("inner1-1")
        func()
        print("inner1-2")
    print("func1-2")
    return inner1
@func1
def 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
@func1
def 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
# 第二步执行的时候从内向外,逐层执行
相关文章
|
4月前
|
测试技术 Python
Python装饰器:为你的代码施展“魔法”
Python装饰器:为你的代码施展“魔法”
312 100
|
5月前
|
设计模式 缓存 监控
Python装饰器:优雅增强函数功能
Python装饰器:优雅增强函数功能
313 101
|
4月前
|
缓存 Python
Python装饰器:为你的代码施展“魔法
Python装饰器:为你的代码施展“魔法
225 88
|
5月前
|
缓存 测试技术 Python
Python装饰器:优雅地增强函数功能
Python装饰器:优雅地增强函数功能
255 99
|
5月前
|
存储 缓存 测试技术
Python装饰器:优雅地增强函数功能
Python装饰器:优雅地增强函数功能
261 98
|
5月前
|
缓存 Python
Python中的装饰器:优雅地增强函数功能
Python中的装饰器:优雅地增强函数功能
|
5月前
|
存储 缓存 测试技术
理解Python装饰器:简化代码的强大工具
理解Python装饰器:简化代码的强大工具
|
5月前
|
缓存 测试技术 Python
解锁Python超能力:深入理解装饰器
解锁Python超能力:深入理解装饰器
158 2
|
5月前
|
设计模式 缓存 运维
Python装饰器实战场景解析:从原理到应用的10个经典案例
Python装饰器是函数式编程的精华,通过10个实战场景,从日志记录、权限验证到插件系统,全面解析其应用。掌握装饰器,让代码更优雅、灵活,提升开发效率。
402 0

推荐镜像

更多