wordpress

Yield vs Return in Python: Understanding the Difference

1. Introducción

Cuando se programa en Python, es común encontrarse con las palabras clave «yield» y «return». Ambas se utilizan para devolver valores de una función, pero tienen diferencias clave en su funcionamiento y uso. En este artículo, exploraremos en detalle las diferencias entre «yield» y «return» en Python y cómo se utilizan en diferentes situaciones.

2. ¿Qué es el return en Python?

En Python, la palabra clave «return» se utiliza para devolver un valor de una función. Cuando se encuentra una declaración «return» en una función, la ejecución de la función se detiene y se devuelve el valor especificado. Esto significa que cualquier código después de la declaración «return» no se ejecutará.

La sintaxis básica de «return» es la siguiente:

«`python
def my_function():
# código de la función
return valor
«`

Donde «valor» es el valor que se desea devolver. Puede ser cualquier tipo de dato válido en Python, como un número, una cadena, una lista, un diccionario, etc.

3. ¿Qué es el yield en Python?

Por otro lado, la palabra clave «yield» se utiliza en Python para crear generadores. Un generador es una función especial que devuelve un iterador, que puede ser utilizado para iterar sobre una secuencia de valores. A diferencia de «return», «yield» no finaliza la ejecución de la función, sino que la pausa y guarda su estado actual.

Recomendado:  Laravel 5.7 Modular Structure Application: Characteristics of a Modular App

La sintaxis básica de «yield» es la siguiente:

«`python
def my_generator():
# código del generador
yield valor
«`

Al igual que con «return», «valor» es el valor que se desea devolver. Sin embargo, a diferencia de «return», «yield» puede aparecer varias veces en una función y cada vez que se encuentra, se devuelve un valor y la función se pausa.

Cuando se llama a un generador, no se ejecuta inmediatamente el código dentro de él. En su lugar, se devuelve un objeto generador que se puede utilizar para iterar sobre los valores generados por el generador. Cada vez que se llama al método «next()» en el objeto generador, se reanuda la ejecución del generador desde donde se pausó y se devuelve el siguiente valor generado.

4. Diferencias clave entre yield y return

Ahora que entendemos qué es «return» y «yield» en Python, podemos destacar algunas diferencias clave entre ellos:

1. Finalización de la función: Cuando se encuentra una declaración «return» en una función, la ejecución de la función se detiene y se devuelve el valor especificado. En cambio, cuando se encuentra una declaración «yield» en una función, la función se pausa y guarda su estado actual, permitiendo que se reanude más tarde.

2. Generación de valores: «return» se utiliza para devolver un solo valor de una función, mientras que «yield» se utiliza para generar una secuencia de valores a través de un generador.

3. Uso de memoria: Cuando se utiliza «return», todos los valores generados por la función se almacenan en la memoria antes de ser devueltos. En cambio, cuando se utiliza «yield», los valores se generan bajo demanda y no se almacenan todos en la memoria al mismo tiempo, lo que puede ser más eficiente en términos de uso de memoria.

Recomendado:  Python User Groups: Los grupos de usuarios más populares de Python

4. Iteración: Los valores devueltos por «return» no se pueden iterar directamente, ya que «return» finaliza la ejecución de la función. Por otro lado, los valores generados por «yield» se pueden iterar utilizando un objeto generador y el método «next()».

5. Ejemplos de uso de yield y return

Para comprender mejor las diferencias entre «yield» y «return», veamos algunos ejemplos de uso de ambas palabras clave.

Ejemplo 1: Utilizando return

«`python
def square_numbers(nums):
result = []
for num in nums:
result.append(num ** 2)
return result

my_nums = [1, 2, 3, 4, 5]
squared_nums = square_numbers(my_nums)
print(squared_nums) # Output: [1, 4, 9, 16, 25]
«`

En este ejemplo, la función «square_numbers» toma una lista de números y devuelve una nueva lista con los números al cuadrado. La función utiliza «return» para devolver la lista resultante.

Ejemplo 2: Utilizando yield

«`python
def square_numbers(nums):
for num in nums:
yield num ** 2

my_nums = [1, 2, 3, 4, 5]
squared_nums = square_numbers(my_nums)
print(squared_nums) # Output:
print(next(squared_nums)) # Output: 1
print(next(squared_nums)) # Output: 4
print(next(squared_nums)) # Output: 9
print(next(squared_nums)) # Output: 16
print(next(squared_nums)) # Output: 25
«`

En este ejemplo, la función «square_numbers» es un generador que devuelve los números al cuadrado uno por uno. La función utiliza «yield» para generar cada valor y se pausa después de cada generación. Luego, se utiliza el objeto generador para iterar sobre los valores generados utilizando el método «next()».

6. Conclusiones

«yield» y «return» son palabras clave importantes en Python que se utilizan para devolver valores de una función. «return» se utiliza para devolver un solo valor y finalizar la ejecución de la función, mientras que «yield» se utiliza para generar una secuencia de valores a través de un generador y pausar la ejecución de la función. La elección entre «yield» y «return» depende de las necesidades específicas de cada situación y del tipo de resultado que se desea obtener.

Recomendado:  Python Queue Module: Documentación oficial del módulo de cola

Autor

osceda@hotmail.com

Deja un comentario

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