Função built-in Python repr()

Da documentação do Python 3

Retorna uma string contendo uma representação imprimível de um objeto. Para muitos tipos, esta função tenta retornar uma string que produziria um objeto com o mesmo valor quando passada para eval(); caso contrário, a representação é uma string entre colchetes angulares que contém o nome do tipo do objeto juntamente com informações adicionais, muitas vezes incluindo o nome e o endereço do objeto. Uma classe pode controlar o que esta função retorna para suas instâncias definindo um método __repr__().

Introdução

A função repr() retorna uma string contendo uma representação imprimível de um objeto. O objetivo de repr() é ser inequívoco. Para muitos tipos, repr() retorna uma string que pode ser executada por eval() para criar um objeto idêntico.

Isso é diferente de str(), que se destina a ser legível por humanos.

Exemplo

import datetime

# Para uma string, repr() adiciona aspas
print(repr("hello"))

# Para um objeto datetime, é inequívoco
now = datetime.datetime.now()
print(repr(now))

# Você pode definir __repr__ para suas próprias classes
class Person:
    def __init__(self, name):
        self.name = name

    def __repr__(self):
        return f"Person(name='{self.name}')"

p = Person("John")
print(repr(p))
'hello'
datetime.datetime(2023, 10, 27, 10, 0, 0, 123456)
Person(name='John')