human
I wrote the below code

    def decorator(func):
        @wraps(func)
        def func_with_caching(*args, **kwargs):
            key = keyfunc(*args, **kwargs)
            val = cache_get(key, cache_name=cache_name)
            if (val is not None):
                return val[0]
            raise NotFoundInCache()
        return func_with_caching
    return decorator

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

def get_cache_with_key(keyfunc, cache_name=None):