PyQuiz 29 – type() comparación en Python

El reto
print(type([]) == type(()))¿Cuál es el resultado?
- a) False
- b) True
- c) Error
Piensa tu respuesta antes de seguir leyendo…
Concepto: type() comparación
La función type(objeto) devuelve el tipo exacto de un objeto como un objeto de clase. Al comparar con ==, se verifica si los dos tipos son exactamente el mismo. Una lista ([]) tiene tipo list y una tupla (()) tiene tipo tuple: son tipos diferentes en la jerarquía de clases de Python.
Aunque listas y tuplas son muy similares (ambas son secuencias ordenadas que admiten elementos heterogéneos), son tipos distintos. La diferencia principal es que las tuplas son inmutables (no se pueden modificar una vez creadas) y las listas son mutables.
La comparación type([]) == type(()) es False porque type([]) devuelve <class 'list'> y type(()) devuelve <class 'tuple'>: dos clases diferentes.
Paso a paso
type([])— se obtiene el tipo de una lista vacía. Resultado:<class 'list'>.type(())— se obtiene el tipo de una tupla vacía. Resultado:<class 'tuple'>.type([]) == type(())— se comparanlistytuple. Son clases distintas. Resultado:False.print(False)— se imprimeFalse.
📥 Llévate el cheatsheet de Python (gratis)
PDF de 6 páginas con lo esencial: tipos, condicionales, bucles, estructuras de datos, funciones y los errores que más vas a cometer. Para tener al lado mientras programas.
Sin spam. Te apuntas a la lista, descargas el cheatsheet y recibes contenido de Python cada semana.
Solución
Respuesta correcta: A) False
type([]) es <class 'list'>, type(()) es <class 'tuple'>. Son tipos diferentes.
Sabías que…
La función type() devuelve el tipo exacto sin considerar la herencia. Para comprobaciones que respeten la herencia, usa isinstance():
# type() es estricto (sin herencia)
print(type([]) == list) # True
print(type(()) == tuple) # True
print(type([]) == type(())) # False
# isinstance() respeta la herencia
print(isinstance(True, int)) # True (bool hereda de int)
print(type(True) == int) # False (bool != int exactamente)
# Tipos curiosos en Python
print(type(None)) #
print(type(lambda: None)) #
print(type(type)) # (metaclase!)
# Comparar tipo como cadena
print(type([]).__name__ == 'list') # True
print(type(()).__name__ == 'tuple') # True Prueba tú mismo
¿Qué devuelve type(True) == type(1)? ¿Y isinstance(True, int)? ¿Por qué son diferentes?
Más PyQuizzes en elpythonista.com/pyquizzes
Tutorial relacionado: Tipos numéricos y booleanos
¿Quieres aprender Python en orden, no a saltos?
Esto que has leído es solo una pieza. En El Pythonista lo verás todo encadenado: 11 módulos, 37+ horas de vídeo, 734 actividades y un proyecto real (MovieTracker) que crece contigo desde la primera variable hasta el deploy a producción.
37+ horas · 734 actividades · Proyecto real · Acceso de por vida · 14 días de garantía
