代码点读机 / Python / @

@ Python · 符号

`@` 是装饰器语法的一部分,放在函数或类定义之前,用来修改或增强其行为。装饰器本质上是一个函数,接收一个函数作为参数,并返回一个新的函数。就像给一个东西贴上标签,或者给它加一层包装,让它多了额外功能。

怎么用

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

小例子

def 记录日志(func):
    def wrapper():
        print("开始调用")
        func()
        print("结束调用")
    return wrapper
@记录日志
def 问候():
    print("你好")
问候()

运行结果

开始调用
你好
结束调用

对比:不使用装饰器的写法

def 问候():
    print("你好")
问候 = 记录日志(问候)
问候()

常见使用场景

- 日志记录。
- 执行时间测量。
- 权限检查。
- 缓存结果。
- 内置装饰器如 `@staticmethod`、`@classmethod`、`@property`。

提醒:- 装饰器会替换原函数,如果原函数有元信息(如名字),建议使用 `functools.wraps` 保留。 - 可以叠加多个装饰器,从下往上执行。

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

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