简单易懂的解释下python的装饰器
时间: 2024-02-20 10:32:01 浏览: 69
详解python中的装饰器
Python的装饰器是一种高级的语法特性,它允许程序员在不修改已有函数的前提下,以一种优雅的方式给函数添加新的功能或修改其行为。装饰器本质上是一个函数,它接受一个函数作为参数,并返回一个函数。通过在函数定义前使用@符号,即可将装饰器应用到该函数上。
例如,下面这个装饰器可以在函数执行前后打印出函数名和执行时间:
```python
import time
def timer(func):
def wrapper(*args, **kwargs):
print(f"Starting {func.__name__}")
start_time = time.time()
result = func(*args, **kwargs)
end_time = time.time()
print(f"Finished {func.__name__} in {end_time - start_time:.4f}s")
return result
return wrapper
```
使用装饰器的语法如下:
```python
@timer
def foo():
time.sleep(1)
```
这会将`foo()`函数传递给`timer()`装饰器函数,并将返回的`wrapper()`函数绑定到原来的`foo()`函数上。当我们调用`foo()`函数时,实际上调用的是`wrapper()`函数,它会在函数执行前后打印出信息并计算执行时间。
需要注意的是,装饰器可以堆叠使用,即多个装饰器可以同时应用于一个函数。此外,装饰器还可以接受参数,从而实现更加灵活的功能扩展。
阅读全文