Function decorator that caches function results

Diez B. Roggisch deets at nospam.web.de
Sun Oct 9 12:21:39 CEST 2005


>>def cache_function(fn):
>>     cache = {}
>>     def cached_result(*args, **kwargs):
>>         if args in cache:
>>             return cache[args]
>>         result = fn(*args, **kwargs)
>>         cache[args] = result
>>         return result
>>     return cached_result
> 
> 
> I'm curious... where does cache live after you use cache_function to
> memoize some function? It doesn't appear to be an attribute of the newly
> memoized function, nor does it look like a global variable.

It's part of the closure - as well as fn, btw. So it is 
per-decorated-function.

Diez



More information about the Python-list mailing list