¿Cómo funciona el 'rendimiento' en este generador de permutación?

def perm_generator(lst):
    if len(lst) == 1:
        yield lst
    else:
        for i in range(len(lst)):
            for perm in perm_generator(lst[:i] + lst[i+1:]):
                yield [lst[i]] + perm

Este código me ha estado molestando, ya que no entiendo cómoyields se conectan entre sí. Mi entendimiento fue queyield actúa como unreturn, pero se detiene temporalmente hasta que se vuelva a llamar. Como estasyields trabajo?

Respuestas a la pregunta(1)

Su respuesta a la pregunta