¿Qué es repr() en Python y por qué todos hablan de ello?

| Última modificación: 4 de diciembre de 2024 | Tiempo de Lectura: 2 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

Aprende a interactuar mejor con los objetos y depurar tu código fácilmente con el repr() en Python. Esta es una función que ofrece una representación de los objetos y te preguntarás, ¿por qué está generando tanto interés últimamente? Pues bien, hoy vamos a contártelo.

repr() en Python

¿Qué es repr()?

La función repr es una herramienta incorporada en Python que devuelve una representación textual de un objeto. Esta representación tiene dos objetivos principales:

  1. Ser útil para los desarrolladores al mostrar detalles precisos sobre el objeto.
  2. Ser suficientemente clara como para que, idealmente, pueda usarse para recrear el objeto en Python.

La sintaxis de repr() no podría ser más sencilla:

repr(objeto)

Donde objeto es cualquier entidad de Python, como cadenas, números, listas, clases personalizadas, entre otros.

Cuando usas repr, obtienes una representación en formato string que es más detallada que la proporcionada por otras funciones como str(). Esto es particularmente útil durante la depuración.

Veamos un ejemplo:

texto = "Hola, mundo"
print(repr(texto))

🔴 ¿Quieres Aprender a Programar con Python? 🔴

Descubre el Full Stack Jr. Bootcamp - Aprende a Programar desde Cero de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada

👉 Prueba gratis el Bootcamp Aprende a Programar desde Cero por una semana

Salida:
‘Hola, mundo’

Aquí, repr incluye las comillas simples en la salida, lo que hace evidente que el resultado es una cadena.

¿En qué se diferencia repr() de str()?

Si ya has usado str(), podrías preguntarte en qué se diferencia de repr(). Aunque ambas convierten objetos a cadenas, tienen propósitos distintos:

  • str(): Devuelve una representación amigable para el usuario, pensada para mostrar resultados de forma más legible.
  • repr(): Devuelve una representación precisa y detallada, pensada para desarrolladores.

Para entenderlo mejor, acudamos al código:

class Persona:
def __init__(self, nombre, edad):
self.nombre = nombre
self.edad = edad

def __str__(self):
return f"{self.nombre}, {self.edad} años"

def __repr__(self):
return f"Persona(nombre={self.nombre!r}, edad={self.edad!r})"

persona = Persona("Ana", 30)
print(str(persona)) # Salida amigable: Ana, 30 años
print(repr(persona)) # Salida detallada: Persona(nombre='Ana', edad=30)

¿En qué situaciones es mejor usar repr()?

Repr() tiene aplicaciones prácticas que van más allá de simplemente “ver” objetos en consola. Veamos:

  • Depuración: Cuando depuras código, necesitas ver detalles específicos de los objetos. Repr te proporciona una descripción exacta que puede incluir datos que str() omite.
lista = ["uno", "dos", "tres"]
print(repr(lista))

Salida:
“[‘uno’, ‘dos’, ‘tres’]”

  • Representación personalizada en clases: Puedes personalizar cómo se muestra un objeto en repr() implementando el método __repr__() dentro de tus clases. Esto es especialmente útil si trabajas con estructuras de datos complejas:
class Producto:
def __init__(self, nombre, precio):
self.nombre = nombre
self.precio = precio

def __repr__(self):
return f"Producto(nombre='{self.nombre}', precio={self.precio})"

producto = Producto("Portátil", 1500)
print(repr(producto))

Salida:
Producto(nombre=’Portátil’, precio=1500)

  • Serialización y recreación de objetos: Si necesitas serializar un objeto o generar un código que lo recree, repr() es una herramienta clave. Idealmente, su salida puede usarse directamente en un script para reconstruir el objeto:
tupla = (1, 2, 3)
print(repr(tupla)) # Salida: (1, 2, 3)

Esta salida puede copiarse tal cual y usarse en otro programa.

Si te interesa el mundo de la programación y quieres seguir aprendiendo o iniciar tu camino, tenemos para ti el bootcamp en programación para principiantes, en donde recibirás todos los conocimientos necesarios que te permitirán ir escalando en el campo laboral más prolífico del sector tecnológico. ¡No te pierdas esta gran oportunidad y apúntate ahora!

Ramón Maldonado

Full Stack Developer y Responsable de Formación base en KeepCoding.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Aprende a Programar desde Cero

Full Stack Jr. Bootcamp

Apúntate y consigue uno de los perfiles más demandados con Python en solo 4 meses.