On 3/26/2011 5:55 AM, Lie wrote:
On Mar 26, 5:10 pm, Terry Reedy<tjre...@udel.edu>  wrote:
On 3/26/2011 12:17 AM, Stefan Behnel wrote:

Not "restarted" in the sense that it gets cleaned up, though. The above
simply passes an explicit value for it that will be used for the single
call.

Which satisfies the time test need, but...

  >  Future calls won't be affected.

Good point. If one does fib(10000) and wants to dump the cache without
dumping all references to the function object, one can currently do
    fib_iter.__kwdefaults__['_cache'] = [0,1]
to truly reset the cache, at least with CPython.

Alternatively:

new_cache = [0, 1]
fib_iter(100, new_cache)
fib_iter(200, new_cache)

No, that is not an alternative to what I wrote ;-).
As Stefan pointed out above, passing a value to over-ride a default only substitutes for the default in that one call. It is like a temporary substitute teacher. It does not replace the default in the function object. The assignment I give above is like a permanent replacement teacher. The previous cache list will be garbage collected.

--
Terry Jan Reedy

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to