Regístrate para acceder a más de 15 cursos gratuitos de programación con un simulador

Polimorfismo paramétrico Python: Polimorfismo

Cuando empezamos a programar, uno de nuestros grandes objetivos es escribir código que podamos reutilizar una y otra vez, ¿verdad? 🔁 En este punto aparece un concepto clave que hace toda la diferencia: el polimorfismo.

Y no te preocupes por el nombre. 😅 Vamos a enfocarnos en un tipo muy especial llamado polimorfismo paramétrico. Aunque suena técnico, lo vamos a desmenuzar paso a paso.


¿Qué es el polimorfismo?

Es una forma de escribir funciones y estructuras que pueden trabajar con distintos tipos de datos sin necesidad de repetir código. Dicho de manera sencilla: es una forma de hacer que el código sea más universal y reutilizable.

¿Por qué es útil el polimorfismo?

Supongamos que necesitas una función para unir dos colecciones. Podrías hacer una para listas, otra para tuplas, otra para cadenas… pero eso es repetir código.

def unir(a, b):
    return a + b

unir([1, 2], [3, 4])         # [1, 2, 3, 4]
unir((1, 2), (3, 4))         # (1, 2, 3, 4)
unir("Hola, ", "mundo")     # "Hola, mundo"

Esta única función sirve para distintos tipos. Eso es polimorfismo paramétrico: escribir una sola función que trabaja con muchos tipos sin importar cuáles son, siempre que se puedan combinar.

¿Qué es el polimorfismo paramétrico?

Es una forma de escribir funciones que pueden trabajar con cualquier tipo de dato, sin importar si es un número, un texto, una lista o lo que sea.

Por ejemplo, imagina que queremos unir dos listas sin importar qué contienen: pueden ser números, cadenas, valores booleanos, etc. Si logramos hacer una sola función que sirva para todos estos casos, estaríamos usando polimorfismo paramétrico.

Esto es muy útil porque:

  • No repetimos funciones para cada tipo.
  • El código es más corto y más claro.
  • Es más fácil mantener y modificar después.

Ejemplos prácticos

Python es un lenguaje con tipado dinámico, lo que significa que no necesitamos decirle explícitamente qué tipo de dato estamos usando.

Gracias a esto, el polimorfismo paramétrico ocurre de forma casi mágica 🪄 —¡y sin que tengamos que hacer mucho esfuerzo!

Veamos un ejemplo usando la función chain() del módulo itertools:

from itertools import chain

# Unimos listas de enteros
list(chain([1], [2, 3, 1]))  # Resultado: [1, 2, 3, 1]

# Unimos conjuntos de cadenas
list(chain({'uno'}, {'dos', 'tres'}))  # Resultado: ['uno', 'dos', 'tres']

# Unimos tuplas de booleanos
list(chain((True,), (False, False, True)))  # Resultado: [True, False, False, True]

La función chain no se preocupa por el tipo de los elementos que unen. Solo necesita que lo que le pasemos sea "iterable", como listas, tuplas o conjuntos.

Ahora hagámoslo nosotros mismos:

def mi_chain(*colecciones):
    resultado = []
    for coleccion in colecciones:
        for elemento in coleccion:
            resultado.append(elemento)
    return resultado

# Probarla
mi_chain([1, 2], [3, 4])  # [1, 2, 3, 4]
mi_chain({'a'}, {'b', 'c'})  # ['a', 'b', 'c']

Esta es una función paramétricamente polimórfica en Python. Trabaja con diferentes tipos de datos sin tener que hacer una versión para cada uno.


¿Y por qué todo esto es importante?

Cuando usamos polimorfismo paramétrico, estamos escribiendo funciones que se adaptan a los datos, no al revés. Eso significa:

  • Menos funciones duplicadas.
  • Código más corto, más limpio y fácil de leer.
  • ¡Reutilizamos más!

Por eso es una herramienta fundamental para escribir código más profesional.



Resumen

  • El polimorfismo permite crear funciones más reutilizables y versátiles.
  • El polimorfismo paramétrico permite escribir una sola función que puede trabajar con muchos tipos de datos.
  • En Python esto es muy natural, porque no hay que declarar tipos.
  • Con polimorfismo paramétrico, evitamos duplicar código y mantenemos nuestros programas más ordenados y escalables.

Para acceder completo a curso necesitas un plan básico

El plan básico te dará acceso completo a todos los cursos, ejercicios y lecciones de Códica, proyectos y acceso de por vida a la teoría de las lecciones completadas. La suscripción se puede cancelar en cualquier momento.

Obtener acceso
130
cursos
1000
ejercicios
2000+
horas de teoría
3200
test

Obtén acceso

Cursos de programación para principiantes y desarrolladores experimentados. Comienza tu aprendizaje de forma gratuita

  • 130 cursos, 2000+ horas de teoría
  • 1000 ejercicios prácticos en el navegador
  • 360 000 estudiantes
Al enviar el formulario, aceptas el «Política de privacidad» y los términos de la «Oferta», y también aceptas los «Términos y condiciones de uso»

Nuestros graduados trabajan en empresas como:

Bookmate
Health Samurai
Dualboot
ABBYY