On 3/25/2011 5:16 AM, Stefan Behnel wrote:
Terry's version is playing with the fact that default arguments are only instantiated once, i.e. (unless overridden by passing an explicit argument) the "_cache" is shared over all calls to the function. This is similar to what your memoization decorator does, but without the additional dict. And, it also "suffers" from the same timing problem that I mentioned before.
It depends on what one wants to measure. If one is memoizing because one expects to call the function 1000s of times in some program, then the fast lookup time of repeated calls represents the actual post-initialization burden on that program. If one want to measure the initialization time, then the cache can easily be restarted with each call (once one knows how): fib_iter(100,_cache=[0,1])
-- Terry Jan Reedy -- http://mail.python.org/mailman/listinfo/python-list