包装一个函数
装饰器接收函数并返回一个替代它的函数。下面的包装函数先打印提示,再调用原函数,并保留原函数的返回结果。
from functools import wraps
def announce(function):
@wraps(function)
def wrapper(*args, **kwargs):
print("开始执行:", function.__name__)
return function(*args, **kwargs)
return wrapper
@announce
def greet(name):
return f"你好,{name}"
print(greet("王柠檬"))
@announce 相当于在定义后执行 greet = announce(greet)。wraps 用于保留原函数的名称、文档说明等元信息。
动手试一试
在包装函数中保存原函数的结果,打印“执行结束”,再返回结果。检查增加提示后,调用者得到的返回值是否保持不变。




























