def indexed_cache(func):
func = functools.lru_cache()(func)
@functools.wraps(func)
@utils.catch(IndexError, return_value=lex.generics.index_error)
def inner(inp, *, index, **kwargs):
results = func(**kwargs)
if isinstance(results, list):
tools.save_results(inp, range(len(results)), results.__getitem__)
return results[index - 1 if index else 0]
else:
return results
return inner
###############################################################################
评论列表
文章目录