美文网首页问题收纳
Python合并多个装饰器

Python合并多个装饰器

作者: 渔父歌 | 来源:发表于2019-10-24 07:27 被阅读0次
import functools

def multi_decorators(*args):
    """
    合并多个装饰器
    越靠前的装饰器就越靠近被装饰的函数,执行的顺序就越靠后
    """
    def _inner(func):
        wrap = functools.wraps(func)
        for decorator in args:
            func = decorator(func)
        return wrap(func)
    return _inner

原理很简单,不再细说,使用方法如下:

def d1(func):
    def _inner():
        print('d1')
        res = func()
        print('d1')
        return res
    return _inner

def d2(func):
    def _inner():
        print('d2')
        res = func()
        print('d2')
        return res
    return _inner

@multi_decorators(d1, d2)
def f():
    print('f')

打印结果为:

"""
d2
d1
f
d1
d2
"""

相关文章

  • Python合并多个装饰器

    原理很简单,不再细说,使用方法如下: 打印结果为:

  • Python 装饰器执行顺序迷思

    探究多个装饰器执行顺序 装饰器是Python用于封装...

  • 二十:Python之多个装饰器装饰

    一:装饰顺序 从离函数最近装饰器开始装饰 二:装饰不带参数的函数 三:装饰固定参数 四:装饰不固定参数 五:通用装饰器

  • 装饰器的使用

    函数带多个参数 普通的装饰器, 打印函数的运行时间 装饰器带有多个参数当装饰器带有多个参数的时候, 装饰器函数就需...

  • 装饰器模式

    介绍 在python装饰器学习 这篇文章中,介绍了python 中的装饰器,python内置了对装饰器的支持。面向...

  • Python 入门之多个装饰器执行顺序

    装饰器是 Python 用于封装函数或代码的工具,网上可以搜到很多文章可以学习,在这里要讨论的是多个装饰器执行顺序...

  • pytest的fixture传参数

    fixture传多个参数 多个fixtur只加一个装饰器 多个fixtur叠加装饰器

  • python 多个装饰器的调用顺序!

    python 多个装饰器的调用顺序 一般情况下,在函数中可以使用一个装饰器,但是有时也会有两个或两个以上的装饰器。...

  • 关于python多重装饰器的执行顺序

    装饰器是Python用于封装函数或代码的工具,网上可以搜到很多文章可以学习,我在这里要讨论的是多个装饰器执行顺序。...

  • 函数 三

    无参装饰器模板 有参装饰器模板 叠加多个装饰器

网友评论

    本文标题:Python合并多个装饰器

    本文链接:https://www.haomeiwen.com/subject/qfzlvctx.html