On 23/02/2013 13:02, Peter Otten wrote:
Frank Millman wrote:
On 23/02/2013 12:13, Frank Millman wrote:
Hi all
I use a dictionary as a cache, and I thought that I could replace it
with collections.defaultdict, but it does not work the way I expected
(python 3.3.0).
>
[...]
from collections import defaultdict
my_cache = defaultdict(fetch_object)
my_obj = my_cache['a']
It does not work, because fetch_object() is called without any arguments.
Thanks, Chris and Peter. Some nice ideas to choose from :-)
Frank
Oh, I overlooked that you are using Python 3. For that there's also
functools.lru_cache. Example:
from functools import lru_cache
@lru_cache(maxsize=None)
... def fetch_object(id):
... print("fetching #{}".format(id))
... return id*id # bogus example
...
fetch_object(42)
fetching #42
1764
fetch_object(42)
1764
fetch_object(10)
fetching #10
100
Interesting.
Thanks, Peter
--
http://mail.python.org/mailman/listinfo/python-list