como definir a função python de loop aninhado dinâmico

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

Perfeito, agora minha pergunta é como definir isso para funcionar, considerando, é claro, que poderia haver mais listas com valores. A idéia é obter a função, o que produziria dinamicamente o mesmo resultado.

Existe uma maneira de explicar ao python: "faça 8 loops aninhados, por exemplo"?

questionAnswers(1)

yourAnswerToTheQuestion