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

Reply via email to