¿Cuándo usar yield en lugar de return en Python?

La declaración de rendimiento suspende la ejecución de una función y devuelve un valor a la persona que llama, pero retiene suficiente estado para permitir que la función se reanude donde se quedó. Cuando la función se reanuda, continúa la ejecución inmediatamente después de la última ejecución de rendimiento. Esto permite que su código produzca una serie de valores a lo largo del tiempo, en lugar de calcularlos a la vez y enviarlos de vuelta como una lista.

Veamos con un ejemplo:

Python

# A Simple Python program to demonstrate working
# of yield
 
# A generator function that yields 1 for the first time,
# 2 second time and 3 third time
 
 
def simpleGeneratorFun():
    yield 1
    yield 2
    yield 3
 
 
# Driver code to check above generator function
for value in simpleGeneratorFun():
    print(value)

Producción:

1
2
3

Return envía un valor específico a quien lo llama, mientras que Yield puede producir una secuencia de valores. Deberíamos usar yield cuando queremos iterar sobre una secuencia, pero no queremos almacenar la secuencia completa en la memoria. El rendimiento se utiliza en los generadores de Python . Una función generadora se define como una función normal, pero cada vez que necesita generar un valor, lo hace con la palabra clave yield en lugar de return. Si el cuerpo de una definición contiene rendimiento, la función se convierte automáticamente en una función generadora. 

Python

# A Python program to generate squares from 1
# to 100 using yield and therefore generator
 
# An infinite generator function that prints
# next square number. It starts with 1
 
 
def nextSquare():
    i = 1
 
    # An Infinite loop to generate squares
    while True:
        yield i*i
        i += 1  # Next execution resumes
        # from this point
 
 
# Driver code to test above generator
# function
for num in nextSquare():
    if num & gt
    100:
        break
    print(num)

Producción:

1
4
9
16
25
36
49
64
81
100

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *