human
I wrote the below code

    def wrapper(*args):
        mem_args = args[:num_args]
        if (mem_args in cache):
            return cache[mem_args]
        result = func(*args)
        cache[mem_args] = result
        return result
    return wraps(func)(wrapper)

What's a good function header?
assistant
#Here's a good function header.

def memoize(func, cache, num_args):