Neste artigo vamos aprender para que serve o yield, que basicamente cria um generator, ou seja, uma lista de dados que é consumida por demanda.
Fala programador(a), beleza? Bora aprender mais sobre Python!
Antes de entender o que é o yield, há dois conceitos que você precisa compreender
Que são: iterações e generators
As iterações
Você pode utilizar uma estrutura como o for para percorrer cada item de uma lista
Isso é chamado de iteração, veja um exemplo:
lista = ['hora','de','codar'] for item in lista: print(item)
Que gera a saída:
hora de codar
As iterações são boas por que você pode percorrer uma lista, seja ela do tamanho que for, e executar uma lógica diferente com base em cada valor apresentado ou inserido nela
Os generators
Generators são basicamente valores gerados por iterações, que não são salvos em memória
O generator vai calcular cada um dos valores da iteração e podemos utilizar este valor como quisermos também
Veja um exemplo:
umgenerator = (x+10 for x in range(5)) for item in umgenerator: print('este é o x + 10: ' + str(item))
Que gera esta saída:
este é o x + 10: 10 este é o x + 10: 11 este é o x + 10: 12 este é o x + 10: 13 este é o x + 10: 14
E depois dessa execução, o generator não poderá ser mais utilizado, essa é uma particularidade desta instrução
E o yield?
Yield é basicamente uma palavra chave que é utilizada semelhante ao return
Porém esta função retorna um generator!
Veja o exemplo:
def utilizandoYield(x): for i in range(x): if(i % 2 == 0): yield 'par' else: yield 'impar' novogenerator = utilizandoYield(10) for i in novogenerator: print(i)
Esta função vai gerar um generator com impar ou par, dependendo do número da iteração, e o comprimento da lista também depende do parâmetro passado
Mas a ideia central aqui é o yield gerando um generator
Então aqui temos a seguinte saída:
par impar par impar par impar par impar par impar
E quando usar generators?
Quando temos, por exemplo, listas muito grandes e não queremos ter essa lista alocada em nossa memória
Então partimos para a estratégia de generators para economizar recursos
Que podem ser feitos com a primeira maneira ensina com loop ou a base de yield
Conclusão
Neste artigo vimos para que serve o yield e também um exemplo de quando devemos utilizá-lo
Basicamente o yield cria um generator com base no que retornaria de uma função
Devemos utilizar o yield ou o generator quando há uma lista muito grande que queremos lidar, para não termos que salvar esta na memória
Confira também nosso catálogo de cursos gratuitos, com aulas semanais no YouTube