这只是实现了Python的装饰器模式。
其实,python的原生的装饰器的应用比这个要强,要广的。
''' known = {0:0, 1:1} def fibonacci(n): assert(n >= 0), 'n must be >= 0' if n in known: return known[n] res = fibonacci(n-1) + fibonacci(n-2) known[n] = res return res if __name__ == '__main__': from timeit import Timer t = Timer('fibonacci(100)', 'from __main__ import fibonacci') print(t.timeit()) ''' import functools def memoize(fn): known = dict() @functools.wraps(fn) def memoizer(*args): if args not in known: known[args] = fn(*args) return known[args] return memoizer @memoize def fibonacci(n): '''返回斐波那契数列的第n个数''' assert(n >= 0), 'n must be >= 0' return n if n in (0, 1) else fibonacci(n-1) + fibonacci(n-2) if __name__ == '__main__': from timeit import Timer measure = [{'exec': 'fibonacci(100)', 'import': 'fibonacci', 'func': fibonacci}] for m in measure: t = Timer('{}'.format(m['exec']), 'from __main__ import {}'.format(m['import'])) print('name: {}, doc: {}, executing: {}, time: {}'.format( m['func'].__name__, m['func'].__doc__, m['exec'], t.timeit()))