Python:创建一个用于记忆函数的函数装饰器
在这个函数中,我要做的是创建一个本地表,并将带有查找的函数包装到表中,如果需要计算,则存储结果。这应该适用于任何函数,只要它只使用可散列参数调用。确保支持任意数量的位置参数和关键字参数。我们不能使用全局表 这将像以下那样使用:Python:创建一个用于记忆函数的函数装饰器,python,Python,在这个函数中,我要做的是创建一个本地表,并将带有查找的函数包装到表中,如果需要计算,则存储结果。这应该适用于任何函数,只要它只使用可散列参数调用。确保支持任意数量的位置参数和关键字参数。我们不能使用全局表 这将像以下那样使用: @memoize def fib(n): if n > 1: return fib(n-1) + fib(n-2) else: return n 有人能给我一些提示吗> def memoize(f): loc
@memoize
def fib(n):
if n > 1:
return fib(n-1) + fib(n-2)
else:
return n
有人能给我一些提示吗>
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中的本地函数,除非您为它提供访问本地_表的其他方式
还要注意的是,一些问题的直译是不必要的。这是装饰师的标准例子之一,你有没有做过任何研究?谷歌搜索两秒钟就可以了。你说你做了多少研究?如果你在Python3上,你可以使用。或者这是某种家庭作业?确保支持任意数量的位置参数和关键字参数。当你把作业改写成一个问题的时候,重写那些听起来像是你打算给我们打分的部分可能是个好主意,因为我们大多数人都不想从你那里拿一门课。