Um gerador é uma função que produz valores preguiçosamente, um de cada vez, usando a palavra-chave yield em vez de return. Ele calcula cada valor sob demanda, em vez de construir todo o resultado na memória — ideal para sequências grandes ou infinitas.
yield vs return
():
[i ** i (n)]
():
i (n):
i **
sq gen_squares():
(sq)
