带参数的装饰器

Posted chenliang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了带参数的装饰器相关的知识,希望对你有一定的参考价值。

装饰器

1.不带参数的装饰器 函数写法

def decorator(func):
    """不带参数

    :param func: 调用的方法
    :return:
    """
    def inner(*args, **kwargs):
        print("not with arguments")
        res = func(*args, **kwargs)
        return res  # 内层返回函数调用结果
    return inner  # 外层返回内层函数

<!--more-->

2.不带参数的装饰器 类写法

class Decorator:

    def __init__(self, function):
        self.function = function

    def __call__(self, *args, **kwargs):
        print("not with arguments")
        res = self.function(*args, **kwargs)
        return res

3.带参数的装饰器 函数写法

def decorator_with_arguments(arg):
    """带参数的装饰器

    :param arg:
    :return:
    """
    def outer(func):
        def inner(*args, **kwargs):
            print("with arguments {arg}")
            res = func(*args, **kwargs)
            return res  # 返回函数运行结果
        return inner  # 返回内层
    return outer  # 返回外层

4.带参数的装饰器 类写法

class Decorator:

    def __init__(self, arg):
        self.arg = arg

    def __call__(self, function):
        def inner(*args, **kwargs):
            print(f"decorator with arguments {self.arg}")
            res = function(*args, **kwargs)
            return res
        return inner

以上是关于带参数的装饰器的主要内容,如果未能解决你的问题,请参考以下文章

python 基础 11 带参数装饰器与递归函数

Python全栈__函数的有用信息带参数的装饰器多个装饰器装饰一个函数

带参数的装饰器

装饰器的应用-装饰器带参数和不带参数

10-5装饰器进阶_带参数的装饰器多个装饰器装饰同一个函数

python_如何定义带参数的装饰器?