pasar funciones y sus argumentos a otra función

Tengo tipos de árbol de subfunciones:

uno sin ningún parámetro (argumentos),segundo con un parámetrotercero con múltiples parámetros (tupla)

Estoy tratando de pasar esas funciones y sus argumentos a otra función que suma los resultados de todas las subfunciones y devuelve el valor de la suma. Los parámetros en esa función deben ser: nombres de cada subfunción como argumentos de posición (* args) y argumentos de cada subfunción como argumentos de clave-valor (* kvargs).

Ejemplo:

 def no_arg()
 def one_arg(a)
 def multiple_args(a, b, c, e, f)

 # execution of function_results_sum:
 function_results_sum(
     no_arg, one_arg, multiple_args,
     one_arg=23,
     multiple_args=(1, 2, 3, 4, 5))

Lo que he hecho hasta ahora:

def no_arg():
    return 5

def ident(x):
    return x

def mult(x, y):
    return x * y    

def function_results_sum(*args, **kwargs):
        return no_arg() + ident(kwargs[ident.__name__]) + mult(*kwargs[mult.__name__])   

El código anterior está pasando argumentos a cada subfunción, perolos nombres de las subfunciones están codificados. Me gustaría modificar el código actual para poder obtener nombres de funciones de * args. A continuación, escribí un pseudocódigo que expresa más menos lo que estoy tratando de lograr:

def function_results_sum(*args, **kwargs):
    for functionName in args:
        result = sum(funcionName(kwargs))
    return result

Ya he pasado todo el día luchando con ese problema, así que por favor no me escriba eso"usar google no hace daño" ;)

Respuestas a la pregunta(3)

Su respuesta a la pregunta