Cómo definir la función dinámica de Python de bucle anidado

a = [1]
b = [2,3]
c = [4,5,6]

d = [a,b,c]


for x0 in d[0]:
    for x1 in d[1]:
        for x2 in d[2]:
            print(x0,x1,x2)

Resultado:

1 2 4
1 2 5
1 2 6
1 3 4
1 3 5
1 3 6

Perfecto, ahora mi pregunta es cómo definir esto para funcionar, considerando, por supuesto, que podría haber más listas con valores. La idea es obtener la función, que dinámicamente produciría el mismo resultado.

¿Hay alguna manera de explicar a python: "hacer 8 bucles anidados, por ejemplo"?

Respuestas a la pregunta(1)

Su respuesta a la pregunta