小编ale*_*xhb的帖子

解释这个高阶函数行为

有人可以解释为什么版本1和2以相同的速度执行?我期望版本2,3和4花费大约相同的时间.

def fib(n):
    return n if n in [0, 1] else fib(n-2)+fib(n-1)

def memoize(fn):
    stored_results = {}

    def memoized(*args):
        try:
            return stored_results[args]
        except KeyError:
            #nothing cached
            result = stored_results[args] = fn(*args)
            return result

    return memoized

#version 1 (unmemoized)
print timeit.timeit('fib(35)', 'from __main__ import fib', number=1)
print fib, '\n'

#version 2
memo_fib = memoize(fib)
print timeit.timeit('memo_fib(35)', 'from __main__ import memo_fib', number=1)
print memo_fib, '\n'

#version 3 (wrapped)
fib = memoize(fib)
print timeit.timeit('fib(35)', 'from __main__ import fib', number=1)
print fib, '\n'

#version …
Run Code Online (Sandbox Code Playgroud)

python decorator

1
推荐指数
1
解决办法
103
查看次数

标签 统计

decorator ×1

python ×1