Python

Python: Para que serve o yield? quando utilizar?

27 de abril de 2020

Python: Para que serve o yield? quando utilizar?

Neste artigo vamos aprender para que serve o yield, que basicamente cria um generator, ou seja, uma lista de dados que é consumida por demanda.

para que serve o yield capa

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

Subscribe
Notify of
guest
0 Comentários
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x