Ответ 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 или другое выражение - но вы редко хотите полагаться на это, за исключением интерактивного исследования.