str vs repr в форматировании строк

str vs repr в форматировании строк

@python_quiz

Разберем этот квиз

Короткий пример, который проверяет знание различия между str() и repr() в разных механизмах форматирования строк в Python.

Исходный код:

python

Что он выведет и почему

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

Вывод программы:

text

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

python

Анализ вариантов ответа (по содержанию)

  • "Обе строки: 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.

Report Page