代码点读机 / Python / 装饰器

装饰器 Python · 装饰器

装饰器是一种特殊函数,用来修改其他函数或类。它通常用 `@装饰器名` 放在函数或类定义前,本质上是把函数传递给装饰器,然后使用返回的新函数。就像给一个东西加一层包装,增强了它的功能,但不改变其核心。

怎么用

@装饰器
def 函数():
    ...

小例子

def 计时器(func):
    import time
    def wrapper():
        开始 = time.time()
        func()
        结束 = time.time()
        print(f"耗时 {结束 - 开始} 秒")
    return wrapper
@计时器
def 慢函数():
    import time
    time.sleep(1)
    print("执行完毕")
慢函数()

运行结果

执行完毕
耗时 1.000... 秒

常见使用场景

- 日志记录。
- 性能计时。
- 权限校验。
- 缓存。
- 内置装饰器如 `@staticmethod`、`@classmethod`、`@property`。

提醒:- 装饰器可以带参数,需要额外包装。 - 使用 `functools.wraps` 保留原函数元信息。

官方文档:https://docs.python.org/zh-cn/3/glossary.html#term-decorator

在代码里遇到不认识的词?打开代码点读机,点一下就懂 → ← Python全部词条