Retorno VS Rendimento em Python — Uma História em Quadrinhos

E esse problema piora quanto mais dados lidamos. E se houver 1000 pessoas na fila?
A palavra-chave 'retornar'
def add10(x):
return x
x = add10(4) # x = 14
def get_takoballs(orders):
output = []
for order in orders:
output.append(f'{order} takoballs')
return output
y = get_takoballs([4,6,8])
# y = ['4 takoballs', '6 takoballs', '8 takoballs']
A palavra-chave 'rendimento'
Como a return
palavra-chave, a yield
palavra-chave significa a saída de uma função.
No entanto, ao contrário da return
palavra-chave, uma função pode gerar yield
várias saídas. A yield
palavra-chave não interrompe toda a função após a execução.
def testfunction():
yield 4
yield 5
yield 6
for n in testfunction():
print(n)
# 4
# 5
# 6
def get_takoballs(orders):
for order in orders:
yield f'{order} takoballs'
for food in get_takoballs([4, 6, 8]):
print(food)
# 4 takoballs
# 6 takoballs
# 8 takoballs
Digamos que temos 10.000 clientes em nossa barraca de tako (em vez de apenas 3).
orders = # a list containing 10000 orders
def return_stall(orders):
# process all 10000 orders first
# then output all 10000 processed orders
output = []
for order in order:
output.append(f'{order} takoballs')
return output
def yield_stall(orders):
# process 1 order, then output it
# repeat til all 10000 orders are completed
for order in orders:
yield f'{order takoballs}'
Para a yield_stall
função, cada pedido é rendido (entregue ao cliente) assim que é processado. O primeiro cara só precisa esperar que seu e apenas seu pedido termine.
Conclusão
Se você estiver lidando com uma quantidade considerável de dados, considere usar uma função geradora (uma função que usa yield
) para acelerar as coisas. Espero que tenha sido claro e útil!
Algumas palavras finais
Se esta história forneceu valor e você deseja mostrar um pouco de apoio, você pode:
- Bata palmas 50 vezes para esta história (isso realmente me ajuda muito)
- Inscreva-se para uma assinatura do Medium usando meu link ($ 5 / mês para ler histórias ilimitadas do Medium)
Codificação de nível
Obrigado por fazer parte da nossa comunidade! Antes de você ir:
- Bata palmas para a história e siga o autor
- Veja mais conteúdo na publicação Level Up Coding
- Curso gratuito de entrevista de codificação ⇒ Veja o curso
- Siga-nos: Twitter | Linkedin | Boletim de Notícias