我编写了一个简单的装饰器来缓存值,以防函数调用返回''
。有没有比我目前使用的字典更好的存储价值的方法?使用hasattr
会更加pythonic,如果是,如何实现?还有别的东西会更好吗?
def cache(func):
# Caching decorator
# if result is '', return saved value
# else save and return result
saved = {1:''}
@wraps(func)
def newfunc(*args, **kwargs):
result = func(*args, **kwargs)
if result:
saved[1] = result
return result
return saved[1]
return newfunc
答案 0 :(得分:2)
将结果存储为原始函数的属性似乎更加pythonic:
def cache(func):
func._result = ''
@wraps(func)
def newfunc(*args, **kwargs):
result = func(*args, **kwargs)
if result:
func._result = result
return func._result
return newfunc