Чем отличаются str и repr ?

Спросят с вероятностью 14%



Функции str() и repr() используются для получения строкового представления объектов, но они служат разным целям и работают по-разному.



Функция str()



Предназначена для получения "приятного" строкового представления объекта, которое может быть представлено пользователю. Она старается сделать строку более читабельной и понятной. Если метод __str__() не определен в классе объекта, использует метод __repr__() как запасной вариант.

class Person:

def __init__(self, name, age):

self.name = name

self.age = age



def __str__(self):

return f"{self.name}, возраст {self.age} лет"



person = Person("Иван", 30)

print(str(person)) # Вывод: Иван, возраст 30 лет




Функция repr()



Предназначена для получения официального строкового представления объекта, которое может быть использовано для воссоздания того же объекта при помощи интерпретатора. repr() должна быть максимально точной и содержать информацию о всех атрибутах объекта. Результат repr() часто используется для отладки и разработки, так как он дает больше деталей о объекте.

class Person:

def __init__(self, name, age):

self.name = name

self.age = age



def __repr__(self):

return f"Person('{self.name}', {self.age})"



person = Person("Иван", 30)

print(repr(person)) # Вывод: Person('Иван', 30)




Основные отличия

Цель: str() используется для удобочитаемого представления объекта, а repr() — для точного и однозначного представления, часто с целью отладки или журналирования.

Вывод: str() старается быть читабельным; repr() — точным и полным, позволяя воссоздать объект при помощи его вывода в интерпретаторе Python.



str() делает описание объекта понятным и красивым для людей. repr() делает описание точным и полным, чтобы программисты могли понять все детали объекта или даже воссоздать объект по этому описанию.



👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 207 вопроса на Data Scientist. Ставь 👍 если нравится контент



🔐 База собесов | 🔐 База тестовых