Python 装饰器:为函数增加一步处理

用一个简单的调用提示,理解函数包装与装饰器语法。

包装一个函数

装饰器接收函数并返回一个替代它的函数。下面的包装函数先打印提示,再调用原函数,并保留原函数的返回结果。

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 用于保留原函数的名称、文档说明等元信息。

动手试一试

在包装函数中保存原函数的结果,打印“执行结束”,再返回结果。检查增加提示后,调用者得到的返回值是否保持不变。

在笔记里找一找

输入关键词,查找相关文章

↑ ↓ 选择文章 · Enter 打开文章 · Esc 关闭