def memoized(func):
_cache = {}
def _deco(*args, **kwargs):
if 'clear_cache' in kwargs or 'clear_cache_only' in kwargs:
_cache.clear()
if 'clear_cache_only' in kwargs:
return # we don't care about the output
del kwargs['clear_cache']
if not isinstance(args, collections.Hashable):
return func(*args, **kwargs)
if args in _cache:
return _cache[args]
else:
value = func(*args, **kwargs)
_cache[args] = value
return value
return update_wrapper(_deco, func)
评论列表
文章目录