我是看的雷蒙德赫廷杰的真棒影片之一,我上了装饰例子有点糊涂:缓存装饰的Python
def cache(func):
saved={}
@wraps(func)
def newfunc(*args):
if args in saved:
return newfunc(*args) # should be return saved[args]?
result = func(*args)
saved[args]=result
return result
return newfunc
我不是特别的装饰专家,但没有的回报调用newfunc(* args)找到该项目被缓存会导致一个永不完成的递归循环?我认为这是假设返回保存的[args](函数最终返回的结果,这是同样的事情,但我认为它永远不会到达那里,如果在缓存中找到项目)。
能告诉你如何'wraps'定义? –
@Asad:几乎可以肯定'从functools import wraps'。 – abarnert
您可以链接到视频(最好带有时间戳) - 或者,如果他有附加的幻灯片演示文稿,请转到幻灯片?这绝对是错误的,即使Raymond Hettinger也没有超出做出愚蠢的错别字。 – abarnert