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

May 05 2023
# Por que 'yield' pode tornar seu código Python mais rápido
E esse problema piora quanto mais dados lidamos. E se houver 1000 pessoas na fila? A palavra-chave 'return' A palavra-chave 'yield' Como a palavra-chave return, a palavra-chave yield significa a saída de uma função.

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 returnpalavra-chave, a yieldpalavra-chave significa a saída de uma função.

No entanto, ao contrário da returnpalavra-chave, uma função pode gerar yieldvárias saídas. A yieldpalavra-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_stallfunçã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:

  1. Bata palmas 50 vezes para esta história (isso realmente me ajuda muito)
  2. 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