python的装饰器介绍
时间: 2024-10-20 11:19:42 浏览: 19
Python装饰器是一种语法糖,它允许在不修改源代码的情况下,动态地修改或增强一个函数的行为。装饰器本质上是一个函数,它接收一个函数作为参数,并返回一个新的函数。
通常情况下,装饰器被用来增强函数的功能,比如添加日志、验证权限等。装饰器也可以用来实现横切关注点(Cross-cutting Concerns),比如事务管理、缓存等。
下面是一个使用装饰器实现缓存的例子:
```
def cache(func):
cached_results = {}
def wrapper(*args):
if args in cached_results:
return cached_results[args]
else:
result = func(*args)
cached_results[args] = result
return result
return wrapper
@cache
def fibonacci(n):
if n in (0, 1):
return n
else:
return fibonacci(n-1) + fibonacci(n-2)
```
这个例子中,我们定义了一个`cache`装饰器,它会缓存函数的结果。当我们对`fibonacci`函数应用这个装饰器时,每次调用`fibonacci`时都会先检查缓存中是否已经有计算结果,如果有,则直接返回结果,否则计算结果并缓存起来。
阅读全文