Подтвердить что ты не робот

Функции str() vs repr() в python 2.7.5

в чем разница между функциями str() и repr() в python 2.7.5?

Объяснение на python.org:

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

Но мне это было непонятно.

несколько примеров:

>>> s = 'Hello, world.'
>>> str(s)
'Hello, world.'
>>> repr(s)
"'Hello, world.'"      # repr is giving an extra double quotes
>>> str(1.0/7.0)
'0.142857142857'
>>> repr(1.0/7.0)
'0.14285714285714285'  # repr is giving value with more precision

поэтому я хочу знать следующее

  • Когда следует использовать str() и когда следует использовать repr()?
  • В каких случаях я могу использовать любой из них?
  • Что может str() делать, что repr() не может?
  • Что может repr() делать, что str() не может?
4b9b3361

Ответ 1

Когда следует использовать str() и когда следует использовать функцию repr()?

Почти всегда используйте str() при создании вывода для конечных пользователей.

repr() в основном полезен для отладки и изучения. Например, если вы подозреваете, что в строке есть непечатаемые символы, или у float есть небольшая ошибка округления, repr() покажет вам; str() не может.

repr() также может быть полезен для генерации литералов для вставки в исходный код. Его также можно использовать для сохранения (с ast.literal_eval или eval), но это редко бывает хорошей идеей - если вы хотите редактировать сохранившиеся значения, что-то вроде JSON или YAML намного лучше, и если вы не планируете для их редактирования используйте рассол.

2. В каких случаях я могу использовать любой из них?

Ну, вы можете использовать их практически в любом месте. Обычно вы не должны использовать их, кроме как описано выше.

3.Что может str() сделать, что repr() не может?

Дайте вам выход, пригодный для использования конечным пользователем - не всегда (например, str (['spam', 'eggs']) вряд ли будет тем, что вы хотите добавить в графический интерфейс), но чаще чем repr().

4.Что может repr() сделать, что str() не может

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

И иногда давайте вам вывод, что действительный литерал Python или другое выражение - но вы редко хотите полагаться на это, за исключением интерактивного исследования.