@ 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全部词条