Разница между print() и repr() при выводе сложных объектов заключается в том, что они используют разные методы для формирования строкового представления объекта. 3
print() при передаче объекта в неё автоматически ищет метод str у объекта и использует его результат для вывода. 1 Этот метод предназначен для отображения информации в удобном для чтения виде. 2
repr() использует метод repr, который предназначен для создания точного и однозначного представления объекта, которое может быть использовано для воссоздания этого объекта. 1 Этот метод должен возвращать строку, содержащую максимально подробную техническую информацию об объекте, включая все необходимые данные для его идентификации и воспроизведения. 1
Таким образом, в системах логирования и отладки предпочтительно использовать repr(), так как он предоставляет более полную информацию о состоянии объекта. 1 В пользовательском интерфейсе или при формировании сообщений для конечных пользователей следует полагаться на str. 1