str vs repr в форматировании строк
@python_quizРазберем этот квиз
Короткий пример, который проверяет знание различия между str() и repr() в разных механизмах форматирования строк в Python.
Исходный код:

Что он выведет и почему
- Первая строка использует старый стиль форматирования через
%с форматом%(name)s. Спецификаторsприводит значение к str(), поэтому для строки 'Ann' будет просто без кавычек: Ann. - Вторая строка использует метод
str.format()с преобразованием!r. Суффикс!rозначает применение repr() к значению, а для строк_repr_ включает кавычки и экранирование при необходимости, поэтому будет вывод с кавычками: 'Ann'.
Вывод программы:

Краткая демонстрация различий

Анализ вариантов ответа (по содержанию)
- "Обе строки: Ann" — не учитывает, что второй вывод использует repr(), поэтому неверно.
- "Первая: 'Ann', вторая: 'Ann'" — первая строка не использует repr(), поэтому кавычек быть не должно.
- "Первая: Ann, вторая: 'Ann'" — соответствует описанному поведению: первая через str(), вторая через repr().
- "Первая: 'Ann', вторая: Ann" — неверно, порядок кавычек противоположный.
Выводы и полезные замечания
- %s и {!s} -> str(): читаемое представление без лишних кавычек.
- {!r} -> repr(): диагностическое/детальное представление, для строк включает кавычки.
- Для отладки обычно удобно использовать repr() (или {!r} / f"{x!r}"), а для конечного пользовательского вывода — str() (или %s / {!s} / f"{x}").
- repr() полезен, когда нужно увидеть невидимые символы, экранирование или отличить пустую строку от None.