import inspect


def zip_params_args(func, args, kwargs = {}):
    """
    Zip the parameter names of function with its arguments. 

    :param func: (...) -> any, given function
    :param args: [any, ...], list of arguments
    :param kwargs: { string: any, ... }, additional key word arguments
    :return: { string: any, ... }, parameters to arguments
    """
    func_params = inspect.signature(func).parameters
    params_args = dict(zip(func_params, args))
    params_args.update(kwargs)
    return params_args