Python的@语法
时间: 2024-09-21 17:10:33 浏览: 11
Python中的`@`语法,通常被称为装饰器(Decorator),是一种高级特性,它允许程序员在运行时修改或增强函数或类的功能,而无需直接改变它们的源码。装饰器本质上是一个接收函数作为输入并返回新函数的函数,其内部逻辑可以在原函数调用前后添加额外的行为。
当你在函数定义前加上`@decorator_name`,等价于执行`decorator_name(func)`,并将结果赋值给原来的函数。这在以下几个方面有应用:
1. 日志记录:可以创建一个装饰器,在函数开始和结束时打印日志信息。
2. 计时器:装饰器可以用于测量函数执行时间。
3. 权限检查:验证用户权限,只有在满足条件时才允许函数执行。
4. 缓存:缓存函数的结果,避免重复计算。
常见的使用装饰器的方式是定义一个新的装饰器函数,然后在其内部包装原始函数。例如:
```python
def timer_decorator(func):
def wrapper(*args, **kwargs):
start_time = time.time()
result = func(*args, **kwargs)
end_time = time.time()
print(f"{func.__name__} took {end_time - start_time} seconds")
return result
return wrapper
@timer_decorator
def my_function():
# 函数体...
my_function() # 输出函数执行时间
```