带参数的函数装饰

25.2 带参数的函数装饰

wrapper 接收 *args, **kwargs。

本节介绍「带参数的函数装饰」的用法与注意点,请结合下方代码示例理解。

建议:先读懂注释,再自己动手修改数字或文字,观察输出变化。

💡 遇到报错先看最后一行英文提示,再对照「常见错误与正确对比」。

通用 wrapper

以下代码含详细中文注释,可直接复制运行。建议对照输出理解每一行的作用。

# ========================================
# 示例:通用 wrapper
# 说明:建议复制到 .py 文件运行,或粘贴到 Python 交互模式
# ========================================
def log(func):  # 定义函数
    def wrapper(*args, **kwargs):
        print(f'调用 {func.__name__}')
        return func(*args, **kwargs)
    return wrapper

@log
def add(a, b):  # 定义函数
    return a + b
print(add(2, 3))  # 输出到屏幕 / 从键盘读入