如何创建functools.lru_cache的别名以进行记忆?

时间:2014-10-03 17:19:58

标签: python decorator memoization

要在Python中为函数添加memoization,可以使用functools.lru_cache()装饰器:

import functools

@functools.lru_cache(maxsize=None)
def my_func():
    ...

但是,我想为functools.lru_cache()的上述用法定义以下别名,以使代码更具可读性:

@memoize
def my_func():
    ...

我的问题是:如何定义这样的别名?以下代码不起作用:

memoize = functools.partial(functools.lru_cache, maxsize=None)

1 个答案:

答案 0 :(得分:7)

您不需要functools.partial,因为它已经设置为接听两个电话。只需拨打一次电话:

memoize = functools.lru_cache(maxsize=None)

然后使用别名作为装饰器:

@memoize
def my_func():
    ...