Comprendiendo los generadores de Python
Los generadores de Python son un tipo especial de función que te permite crear iteradores. A diferencia de las funciones normales, que devuelven un valor y luego terminan, los generadores se pueden pausar y reanudar, lo que les permite generar una secuencia de valores con el tiempo.
Los generadores son especialmente útiles cuando se trabaja con conjuntos de datos grandes o infinitos, ya que pueden producir valores uno a la vez, en lugar de generar todo el conjunto de datos de una vez y almacenarlo en la memoria.
La principal diferencia entre un generador y una función normal es el uso de la palabra clave yield
en lugar de la palabra clave return
. Cuando se llama a una función generadora, devuelve un objeto generador, que luego se puede iterar para recuperar los valores generados por la función.
A continuación, se muestra un ejemplo sencillo de una función generadora que genera los primeros n
números de Fibonacci:
def fibonacci(n):
a, b = 0, 1
for i in range(n):
yield a
a, b = b, a + b
En este ejemplo, la función fibonacci()
es una función generadora que utiliza la palabra clave yield
para devolver cada número de Fibonacci, en lugar de devolver toda la secuencia de una vez.
Para usar este generador, puedes crear una instancia de la función fibonacci()
y luego iterar sobre los valores que genera:
fib = fibonacci(10)
for num in fib:
print(num)
Esto mostrará los primeros 10 números de Fibonacci:
0
1
1
2
3
5
8
13
21
34
Los generadores también se pueden utilizar en una amplia variedad de otras aplicaciones, como el procesamiento de conjuntos de datos grandes, la implementación de corutinas y la creación de estructuras de datos personalizadas.