在函数调用之间保存值
Save value between function calls
我写了一个简单的装饰器来缓存值,以防函数调用 return ''
。有没有比我目前使用的字典更好的存储值的方法?使用 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
将结果存储为原始函数的属性似乎更符合 Python 风格:
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
我写了一个简单的装饰器来缓存值,以防函数调用 return ''
。有没有比我目前使用的字典更好的存储值的方法?使用 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
将结果存储为原始函数的属性似乎更符合 Python 风格:
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