Sol*_*xun 4 python caching decorator
我正在观看 Raymond Hettinger 的一段很棒的视频,我对装饰器示例有点困惑:
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
Run Code Online (Sandbox Code Playgroud)
我不是装饰器方面的专家,但是在发现该项目被缓存时对 newfunc(*args) 的调用返回不会导致永远不会结束的递归循环吗?我认为它应该返回保存的[args](该函数最终返回结果,这是同一件事,但我认为如果在缓存中找到一个项目,它永远不会到达那里。)
小智 5
您还可以使用@functools.lru_cache(maxsize=128, typed=False)\xc2\xb6 \n这看起来像:
\n\nfrom functools import lru_cache\n\n@lru_cache(maxsize=None)\ndef fib(n):\n if n < 2:\n return n\n return fib(n-1) + fib(n-2)\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
3527 次 |
| 最近记录: |