Entender a palavra-chave yield
em Python é essencial para qualquer programador Python, especialmente ao lidar com grandes conjuntos de dados ou fluxos de dados. Neste post, vamos explorar o que yield
faz, como se relaciona com geradores e por que é útil.
Iteráveis e Geradores
Antes de nos aprofundarmos em yield
, vamos esclarecer dois conceitos: iteráveis e geradores.
Iteráveis
Um iterável é qualquer objeto Python sobre o qual você pode iterar usando um loop for
. Listas, strings e tuplas são todos exemplos de iteráveis. Quando você itera sobre uma lista, pode ler seus itens um por um, o que é conhecido como iteração.
minha_lista = [1, 2, 3]
for i in minha_lista:
print(i)
TestarCompreensões de lista também criam iteráveis:
minha_lista = [x*x for x in range(3)]
for i in minha_lista:
print(i)
TestarEmbora os iteráveis sejam práticos, eles podem consumir muita memória se você estiver lidando com um grande número de valores, pois todos os dados que estão dentro deles são mantidos em memória RAM.
Geradores
Geradores são um tipo especial de iterável que você só pode iterar uma vez. Eles não armazenam todos os valores na memória; em vez disso, os valores de um gerador são gerados na hora da iteração, um a um. Isso significa que um gerador nunca estourará a memória do seu computador, embora você só possa iterar sobre seus valores uma única vez.
meu_gerador = (x*x for x in range(3))
for i in meu_gerador:
print(i)
TestarNote o uso de parênteses ()
em vez de colchetes []
. Esta é a diferença que faz um objeto ser um gerador.
A Palavra-Chave Yield
A palavra-chave yield
transforma uma função em um gerador. Ao contrário de return
, que envia um valor especificado de volta para quem chamou, yield
pode produzir uma sequência de valores. Dizemos que a função gera esses valores.
Aqui está um exemplo simples:
def criar_gerador():
for i in range(3):
yield i*i
meu_gerador = criar_gerador()
for i in meu_gerador:
print(i)
TestarQuando você chama uma função que contém yield
, ela não executa o código da função. Em vez disso, retorna um objeto gerador. Esse gerador então processa o código da função cada vez que o loop for
solicita um novo item.
Resumo
Em resumo, a palavra-chave yield
em Python é usada para criar um gerador que pode produzir uma sequência de valores para iteração. Quando uma função contendo yield
é chamada, ela retorna um objeto gerador que é então iterado para recuperar valores um de cada vez. Isso é particularmente útil para eficiência de memória e ao lidar com sequências grandes ou potencialmente infinitas. Ao dominar yield
, você pode escrever códigos Python mais eficientes que lidam com grandes conjuntos de dados com facilidade.
Cursos de programação gratuitos com certificado
Aprenda a programar e desenvolva soluções para o seu trabalho com Python para alcançar novas oportunidades profissionais. Aqui na Asimov você encontra:
- Conteúdos gratuitos
- Projetos práticos
- Certificados
- +20 mil alunos e comunidade exclusiva
- Materiais didáticos e download de código
Comentários