欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

Python装饰器:输入参数与返回值的打印技巧

最编程 2024-02-19 17:25:21
...

Python 装饰器是一种语法糖,它允许我们在不改变原始函数代码的情况下,增加功能或修改函数的行为。在许多场景下,装饰器可以用来打印函数的输入和输出。下面是一个示例:

def log(func):
    def wrapper(*args, **kwargs):
        print(f"Calling function {func.__name__} with args={args} and kwargs={kwargs}")
        result = func(*args, **kwargs)
        print(f"Function {func.__name__} returned {result}")
        return result
    return wrapper

@log
def add(a, b):
    return a + b

result = add(2, 3)
print(f"Result: {result}")

在这个例子中,我们定义了一个名为 log 的装饰器,它会在被装饰的函数被调用时打印输入和输出。log 装饰器定义了一个内部函数 wrapper,它接收任意数量的位置参数 args 和关键字参数 kwargs。这里我们使用了可变长度的参数列表,使得这个装饰器可以用于任意数量的参数。在 wrapper 函数内部,我们首先打印了被装饰函数的名称和参数,然后调用了原始函数,获取返回结果。最后,我们打印了函数的返回值并返回它。

在被装饰的函数上,我们使用了 @log 语法糖,将 log 装饰器应用到 add 函数上。当我们调用 add 函数时,实际上会调用 wrapper 函数,而 wrapper 函数会在调用原始函数前后打印输入和输出。最终,我们会得到打印出来的输入输出信息和函数返回的结果。

总结一下,装饰器是 Python 语言中非常强大的工具,可以用来修改函数的行为,增加功能,甚至用于实现 AOP 编程模式。通过定义一个接收任意数量参数的内部函数,我们可以在装饰器内部调用原始函数,并在调用前后进行一些自定义的操作,从而实现很多有用的功能,如打印函数的输入输出。

推荐阅读