Python装饰器原理与应用:缓存功能示例
装饰器是 Python 中的一种特殊语法,它允许我们修改或增强已经存在的函数、方法或者类。缓存装饰器就是一个很好的例子,它通过保存计算结果,来提高函数的执行效率。
下面是一个使用装饰器实现缓存功能的例子:
# 定义一个缓存装饰器
def cache(func):
# 创建一个字典来存储结果
cache_dict = {}
# 定义装饰后的函数
def wrapper(*args, **kwargs):
# 获取参数列表
key = args + tuple(kwargs.items()))
# 如果在缓存中找到了结果,直接返回
if key in cache_dict:
return cache_dict[key]
# 否则,执行原函数并保存结果到缓存
result = func(*args, **kwargs))
cache_dict[key] = result
return result
# 返回装饰后的函数
return wrapper
# 使用装饰器的例子:计算斐波那契数列
@cache
def fibonacci(n):
if n <= 0:
raise ValueError("Input should be a positive integer.")
elif n == 1:
return 0
elif n == 2:
return 1
else:
return fibonacci(n-1) + fibonacci(n-2)
# 测试代码,输出斐波那契数列的前10项
for i in range(10):
print(fibonacci(i)))
在这个例子中,cache
装饰器用于创建一个缓存字典,保存计算结果。当需要计算斐波那契数列时,如果结果已经在缓存中,就直接返回,避免重复计算。
还没有评论,来说两句吧...