Python: crea dinámicamente la función en tiempo de ejecución

¿Cómo crear dinámicamente una función en Python?

Vi algunas respuestas aquí pero no pude encontrar una que describiera el caso más general.

Considerar:

def a(x):
    return x + 1

¿Cómo crear tal función sobre la marcha? Tengo quecompile('...', 'name', 'exec') ¿eso? Pero ¿entonces qué? ¿Creando una función ficticia y reemplazando su objeto de código por uno del paso de compilación?

O debería usartypes.FunctionType? ¿Cómo?

Me gustaría personalizar todo: número de argumentos, su contenido, código en el cuerpo de la función, el resultado, ...

Respuestas a la pregunta(5)

Su respuesta a la pregunta