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 编程模式。通过定义一个接收任意数量参数的内部函数,我们可以在装饰器内部调用原始函数,并在调用前后进行一些自定义的操作,从而实现很多有用的功能,如打印函数的输入输出。
上一篇: C#编程:中简体转换工具类
下一篇: 读完《远方的救世主》的心得体会