Ir al contenido principal

Tutorial de comprobación de tipos en Python

Aprende sobre la comprobación de tipos, los distintos sistemas de tipos en varios lenguajes, además de duck typing y type hinting.
Actualizado 17 sept 2026  · 7 min leer

Explorar con IA

ChatGPTClaudePerplexity

La propia ayuda del intérprete realiza la comprobación de tipos en Python. Como Python es un lenguaje dinámico, no obliga a especificar el tipo de los objetos, lo que puede provocar errores difíciles de detectar. Para evitarlo, Python puede usarse junto con otras herramientas e incorporar características de comprobación estática de tipos además de su propio duck typing.

Existen dos tipos de sistemas de tipos que siguen distintos lenguajes de programación, que se muestran a continuación.

    1. Lenguaje de tipado estático
    2. Lenguaje de tipado dinámico

Lenguaje de tipado estático

La comprobación del tipo de una variable se hace en tiempo de compilación. Además, el sistema de tipos del lenguaje obliga a declarar explícitamente el "tipo de dato" de la variable antes de usarla. Entre los lenguajes con tipado estático están: Scala, Java, C++, etc.
Por ejemplo, la declaración de un String en Scala sería:
var myCar:String = "Mercedes";
En el código anterior, la variable "myCar" se declara explícitamente con el tipo de dato "String" y el valor "Mercedes".

Lenguaje de tipado dinámico

La comprobación del tipo de una variable se hace en tiempo de ejecución. Además, el sistema de tipos del lenguaje no obliga a declarar explícitamente el "tipo de dato" de la variable antes de usarla. Entre los lenguajes con tipado dinámico están: Python, JavaScript, Ruby, etc.
Por ejemplo, un string en Python se define así:
myCar = "Mercedes"
En el código anterior, la variable "myCar" no necesita declararse explícitamente.

"type()" e "isinstance()" en Python

Se puede conocer el tipo de las variables con la propia función "type()" de Python. "type()" puede usarse en tiempo de ejecución para depurar y averiguar el tipo exacto de una variable en el programa. Veamos el tipo de algunas variables en el siguiente ejemplo.

my_var = 12
print(type(my_var))

El código anterior mostrará "int", ya que el tipo de dato de la variable es entero y "type()" lo identifica.

La función "insinstance('obj','class')" de Python permite saber si "obj", es decir, el objeto, es instancia de la clase o no. El valor devuelto es booleano: True o False.

my_var = "Hello"
print(isinstance(my_var,str))

El código anterior mostrará True. Como el tipo de dato de la variable es un string, "isinstance()" lo identifica.

Duck typing en Python

Hay un principio muy conocido en Python: "Si parece un pato, nada como un pato y grazna como un pato, probablemente sea un pato". En resumen, el principio dice que el tipo del objeto o la clase no importa: si el objeto tiene métodos y propiedades equivalentes, puede usarse para un fin concreto.
Veamos un ejemplo para aclararlo.

En el siguiente ejemplo hay dos clases, "Duck" y "Human". Duck es una clase que incluye los métodos quack y fly. De forma similar, Human es una clase con sus propios métodos "quack" y "fly". Duck y Human son clases diferentes y, por tanto, tipos u objetos distintos. Sin embargo, Human tiene métodos análogos a "fly" y "quack" de Duck. También hay una función "fly_quack", que encaja más con "Duck" que con "Human" porque puede volar y graznar.

class Duck:
    def quack(self):
        print('Quack')
    def fly(self):
        print('Flap')
class Human:
    def quack(self):
        print('Trying to Quack like a duck')
    def fly(self):
        print('Spreading my arm to flap like a duck')      
def fly_quack(thing):
    thing.quack()
    thing.fly()

Creemos una instancia de "Duck" llamada du y pásala a la función "fly_quack(du)". De forma similar, creamos una instancia de Human "h" y la pasamos a "fly_quack(h)".

du = Duck()
fly_quack(du)
h = Human()
fly_quack(h)

La salida del código anterior es la siguiente:

Trying to Quack like a duck
Spreading my arm to flap like a duck
Quack
Flap

Aunque "Human" es una clase distinta de "Duck", Python llama a la función "fly_quack" también para Human. Aunque los tipos de objeto son diferentes, como "Human" tiene métodos equivalentes (quack y fly), se comporta y ofrece los métodos requeridos.

Type hint y mypy

El tipado dinámico de lenguajes como Python aporta accesibilidad y legibilidad, pero también tiene desventajas. Una de ellas es localizar errores en tiempo de ejecución porque Python no impone el tipo de las variables. El resultado puede ser errores y bugs difíciles de encontrar a medida que el código crece.

Python incorporó las type hints a partir de la versión 3.5. Las versiones anteriores pueden no soportar esta funcionalidad.

Veamos un ejemplo sencillo sin type hints ni mypy.

La función siguiente está pensada para restar enteros: resta dos números enteros y devuelve el resultado.

def sub_this(x,y):
    return 'Subtraction'
print(sub_this(8,'hello'))

Aquí la función debería aceptar dos enteros "x" e "y", pero como no hay reglas impuestas, puede recibir cualquier tipo de dato. Además, el valor devuelto puede ser cualquiera: se devuelve un "str" ("Subtraction") cuando lo esperado era un "int".

Veamos una implementación similar usando type hints y "mypy", que ayuda a aplicar comprobación estática de tipos y a reducir errores y bugs en el programa con facilidad.

"mypy" es un módulo de Python que permite la comprobación estática de tipos y combina el checking dinámico (duck typing) de Python con las type hints.

Necesitas instalar el paquete "mypy"
pip install mypy

Puedes crear un archivo llamado "mypy_example.py" en tu máquina local y escribir el siguiente código.
El siguiente código es un programa sencillo que acepta dos enteros como parámetros y, tras "->", indica que el tipo devuelto también es un "int". Sin embargo, la función devuelve el string "Subtracted two integers".

def sub_this(x:int,y:int) -> int:
    return 'Subtracted two integers'
print(sub_this(8,4))

Ejecuta el archivo anterior en la terminal con el siguiente comando.

mypy mypy_example.py

Verás un error que indica que se ha encontrado un valor de retorno "str" inesperado y que debería ser "int".

Mensaje de error

Cambiemos el valor de retorno para que sea la resta de los dos enteros y así se devuelva un entero.

def sub_this(x:int,y:int) -> int:
    return x - y
print(sub_this(8,4))

Mensaje de éxito

Los resultados anteriores muestran que se imprime el mensaje de éxito y no se detectan problemas.

¡Enhorabuena!

¡Has llegado al final de este tutorial!

En este tutorial has aprendido sobre la comprobación de tipos, los distintos sistemas de tipos en varios lenguajes, los métodos de Python ("type()" e "isinstance()"), el duck typing en Python y las type hints combinadas con "mypy".

Si quieres aprender más sobre Python, haz el curso de DataCamp Software Engineering for Data Scientists in Python.

Referencias:

  1. Vídeo de Corey en YouTube sobre duck typing
Temas
Python

Más sobre Python

Curso

Introducción a Python

4 h
7M
Domina los fundamentos del análisis de datos con Python en cuatro horas y descubre sus paquetes más usados.
Ver detallesRight Arrow
Iniciar Curso
Ver másRight Arrow
Relacionado

Tutorial

Conversión de tipos de datos en Python: guía con ejemplos

En este tutorial de Python verás la conversión implícita y explícita de tipos en estructuras primitivas y no primitivas con ayuda de ejemplos de código.
Sejal Jaiswal's photo

Sejal Jaiswal

14 min

Tutorial

Tutorial de Estructuras de Datos en Python

Introdúcete en las estructuras de datos de Python: aprende más sobre tipos de datos y estructuras de datos primitivas y no primitivas, como cadenas, listas, pilas, etc.
Sejal Jaiswal's photo

Sejal Jaiswal

24 min

Tutorial

Tutorial Python Docstrings : Ejemplos y Formato de Cadenas Doc Pydoc, Numpy, Sphinx

Aprende sobre las Docstrings de Python. Encuentra diferentes ejemplos y tipos de formato de docstrings para Sphinx, Numpy y Pydoc.
Aditya Sharma's photo

Aditya Sharma

15 min

Tutorial

Funciones en Python: cómo llamar y escribir funciones

Descubre cómo escribir funciones en Python reutilizables y eficientes. Domina los parámetros, las sentencias return y temas avanzados como las funciones lambda. Organiza mejor tu código con main() y otras buenas prácticas.
Karlijn Willems's photo

Karlijn Willems

14 min

Tutorial

Tutorial sobre cómo concatenar cadenas en Python

Aprende varios métodos para concatenar cadenas en Python, con ejemplos que ilustran cada técnica.
DataCamp Team's photo

DataCamp Team

5 min

Tutorial

Tutorial de Python sobre conjuntos y teoría de conjuntos

Aprende sobre los conjuntos en Python: qué son, cómo crearlos, cuándo usarlos, funciones incorporadas y su relación con las operaciones de la teoría de conjuntos.
DataCamp Team's photo

DataCamp Team

13 min

Ver MásVer Más