Qual a utilidade da palavra reservada 'yield'?

A palavra reservada yield é utilizada em linguagens de programação para criar geradores, ou seja, funções que podem pausar e retomar a execução em determinados pontos, em vez de serem executadas do início ao fim de uma vez só.

Essa palavra-chave é útil em situações em que precisamos retornar uma sequência de valores sob demanda, economizando recursos de memória e permitindo um processamento mais eficiente. Em vez de gerar todos os valores de uma vez e armazená-los em uma estrutura de dados, podemos usar o yield para retornar um valor por vez.

Um exemplo prático de uso do yield é quando queremos imprimir todos os números pares de 0 a N, mas sem armazenar todos os números na memória de uma vez. Podemos fazer isso criando uma função geradora com um loop e a palavra-chave yield dentro dele. Veja o exemplo a seguir em Python:

def gerar_pares(n):
    i = 0
    while i <= n:
        if i % 2 == 0:
            yield i
        i += 1

for numero in gerar_pares(10):
    print(numero)

Nesse caso, a função gerar_pares() é uma função geradora que, ao ser chamada no loop for, gera um número par por vez. Cada vez que o yield é encontrado, o valor é retornado para o loop for, que o imprime. Dessa forma, a função gera apenas os números pares necessários, economizando memória.

Em resumo, a palavra reservada yield é útil para criar geradores de sequências de valores sem ocupar muita memória, permitindo um processamento mais eficiente.