python装饰器原理
时间: 2024-08-07 15:01:09 浏览: 100
Python装饰器本质上是特殊类型的函数,它们允许我们在不修改原函数源码的情况下,动态地增加或改变其行为。装饰器的工作原理基于函数组合(function composition)。当一个函数`@decorator`被应用到另一个函数`func`上时,实际上是这样执行的:
1. 定义装饰器函数,它接受一个函数作为输入参数(`fn`)。
```python
def decorater(fn):
# 装饰器逻辑,如添加日志、计时等
def wrapper(*args, **kwargs):
# 执行原始函数前的操作
result = fn(*args, **kwargs)
# 执行后的操作
return result
return wrapper
```
2. 使用装饰器`@decorator`修改函数的行为。
```python
@decorator
def function_to_decorate():
# 函数体
```
举个例子,如果我们有一个装饰器用于测量函数运行时间:
```python
def timer(func):
def wrapper(*args, **kwargs):
start_time = time.time()
result = func(*args, **kwargs)
end_time = time.time()
print(f"{func.__name__} running time: {end_time - start_time} secs.")
return result
return wrapper
@timer
def linear_search():
# ...搜索逻辑...
linear_search() # 输出运行时间
```
阅读全文