Return VS Yield en Python: un cómic corto

May 05 2023
# Por qué 'rendimiento' puede hacer que su código Python sea más rápido
Y este problema se agrava cuantos más datos manejamos. ¿Qué pasa si hay 1000 personas en la fila? La palabra clave 'return' La palabra clave 'yield' Al igual que la palabra clave return, la palabra clave yield significa el resultado de una función.

Y este problema se agrava cuantos más datos manejamos. ¿Qué pasa si hay 1000 personas en la fila?

La palabra clave 'retorno'

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']

La palabra clave 'rendimiento'

Al igual que la returnpalabra clave, la yieldpalabra clave significa la salida de una función.

Sin embargo, a diferencia de la returnpalabra clave, una función puede generar yieldvarias salidas. La yieldpalabra clave no detiene toda la función después de ejecutarse.

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 tenemos 10000 clientes en nuestro stand de tako (en lugar de solo 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 la yield_stallfunción, cada pedido se entrega (entrega al cliente) tan pronto como se procesan. El primer tipo solo necesita esperar a que termine su pedido y solo él.

Conclusión

Si está tratando con una cantidad considerable de datos, considere usar una función generadora (una función que usa yield) para acelerar las cosas. ¡Espero que esto haya sido claro y útil!

Algunas palabras finales

Si esta historia proporcionó valor y desea mostrar un poco de apoyo, podría:

  1. Aplaude 50 veces por esta historia (esto realmente me ayuda)
  2. Regístrese para obtener una membresía de Medium usando mi enlace ($ 5 / mes para leer historias ilimitadas de Medium)

Codificación de nivel superior

¡Gracias por ser parte de nuestra comunidad! Antes de que te vayas:

  • Aplaude la historia y sigue al autor
  • Ver más contenido en la publicación Level Up Coding
  • Curso gratuito de entrevista de codificación ⇒ Ver curso
  • Síguenos: Twitter | LinkedIn | Boletin informativo