Cómo crear funciones generadoras en Python

| Última modificación: 15 de marzo de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

En el mundo de la programación orientada a objetos, las funciones generadoras en Python son una herramienta poderosa y versátil que permite trabajar con secuencias de datos de una manera eficiente y elegante. En este artículo, explorarás qué son las funciones generadoras en Python, cómo se crean y cómo pueden utilizarse en el desarrollo web.

¿Qué son las funciones generadoras en Python?

Las funciones generadoras en Python son una forma especial de crear funciones que pueden generar una secuencia de valores de manera diferida. Esto significa que en lugar de calcular todos los valores de la secuencia de una vez y almacenarlos en la memoria, una función generadora calcula y devuelve un valor a la vez, conservando así recursos de memoria.

Creando una función generadora

Para crear una función generadora en Python, simplemente debes utilizar la palabra clave yield en lugar de return en la definición de la función. Veamos un ejemplo simple de una función generadora que genera los primeros 10 números primos:

def generador_numeros_primos(): 
       numeros_primos = [] 
       numero = 2 
       while True: 
              es_primo = True 
              for divisor in range(2, numero): 
                    if numero % divisor == 0: 
                          es_primo = False 
                          break 
              if es_primo: 
                   yield numero 
                   numeros_primos.append(numero) 
              numero += 1 
              if len(numeros_primos) == 10: 
                   break

En este ejemplo, la función generador_numeros_primos utiliza un bucle while para generar números primos y utiliza yield para devolver cada número primo uno por uno.

Utilizando funciones generadoras

Las funciones generadoras pueden ser extremadamente útiles en situaciones donde necesitamos trabajar con grandes conjuntos de datos o secuencias infinitas. Por ejemplo, puedes utilizar una función generadora para leer un archivo línea por línea:

def leer_archivo(nombre_archivo): 
       with open(nombre_archivo, 'r') as archivo: 
              for linea in archivo: 
                    yield linea

De esta manera, puedes procesar archivos de cualquier tamaño sin preocuparte por agotar la memoria.

Operadores en funciones generadoras

Las funciones generadoras también pueden aprovechar los operadores lógicos, relacionales y aritméticos de Python para realizar tareas más complejas. Por ejemplo, puedes utilizar operadores lógicos y relacionales para filtrar los valores generados por una función generadora:

def numeros_pares(): 
       numero = 0 
       while True: 
               if numero % 2 == 0: 
                   yield numero 
              numero += 1

En este caso, la función generadora numeros_pares genera solo números pares.

Funciones lambda en funciones generadoras

Python también nos permite utilizar funciones lambda en funciones generadoras para realizar transformaciones en los valores generados. Por ejemplo, puedes utilizar una función generadora para generar el cuadrado de los números pares:

def cuadrado_de_numeros_pares(): 
       numeros = numeros_pares() 
       for numero in numeros: 
             yield lambda x: x ** 2

En este caso, la función generadora cuadrado_de_numeros_pares toma los valores generados por numeros_pares y aplica una función lambda para calcular el cuadrado de cada número.

Trabajar con módulos y paquetes

Las funciones generadoras también pueden utilizarse en conjunto con módulos y paquetes para organizar y reutilizar código en proyectos más grandes. Puedes definir tus funciones generadoras en un módulo y luego importarlas en otros archivos de tu proyecto. Esto te permite mantener tu código limpio y modular.

En resumen, las funciones generadoras en Python son una herramienta poderosa para trabajar con secuencias de datos de manera eficiente y elegante. Te permiten generar valores de manera diferida, conservando recursos de memoria y son útiles en una variedad de situaciones, desde procesar archivos hasta realizar cálculos complejos.

¡Únete a KeepCoding y sigue aprendiendo!

Si estás buscando una forma de cambiar tu vida y entrar en el sector IT en poco tiempo, el Desarrollo Web Full Stack Bootcamp de KeepCoding es la respuesta que buscas. La industria tecnológica tiene una alta demanda de profesionales y ofrece salarios altos y una estabilidad laboral que pocos otros sectores pueden igualar. Con este bootcamp, aprenderás habilidades clave en desarrollo web, incluyendo el uso de funciones generadoras en Python. En pocos meses, estarás listo para iniciar una carrera exitosa en el mundo de la tecnología.

No pierdas la oportunidad de cambiar tu vida. ¡Inscríbete hoy mismo y comienza tu viaje hacia una carrera emocionante y lucrativa en el sector IT!

Alberto Casero

Alberto Casero es CTO en Watium, Fundador de Kas Factory & Coordinador del Bootcamp en Desarrollo Web.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Desarrollo Web

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado