Python:创建一个记忆函数的函数装饰器

时间:2014-09-19 19:26:25

标签: python

我在这个函数中要做的就是创建一个本地表,并在需要计算结果的表和存储结果时将函数包装起来。这应该适用于任何函数,只要它只使用hashable参数调用。确保您支持任意数量的位置和关键字参数。 (我们不能使用全局表)

这将用作:

@memoize
def fib(n):
    if n > 1:
        return fib(n-1) + fib(n-2)
    else:
        return n

有人可以给我一些提示>?

1 个答案:

答案 0 :(得分:0)

def memoize(f):
    local_table = create_a_local_table()
    @functools.wraps
    def wrapper(*args, **kwargs):
        assert isinstance(len(args), numbers.Number)
        assert isinstance(len(kwargs), numbers.Number)
        return lookup_into_the_table_and_store_of_the_result_if_it_needs_to_be_computed(*args, **kwargs)
    return wrapper

实现这两个功能留给读者练习。请注意,第二个必须是memoize中的本地函数,除非您提供其他方式来访问local_table

另请注意,您的问题的某些字面翻译是不必要的。

相关问题