What about not storing args at all? Something like this:

def cache_function(func, args_list):
    cache = {}
    def cached_result(*args, **kwargs):
        kwargs.update(dict(zip(args_list, args)))
        if kwargs in cache:
            return cache[kwargs]
        result = func(**kwargs)
        cache[kwargs] = result
        return result
    return cached_result

args_list is a list of all the argument names, so that they can be
converted into keyword arguments.

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

Reply via email to