Отображение многостроковых r-строк

В интерактивном интерпретаторе я завожу многострочную строку и пытаюсь ее вывести.

>>> s = r'''Hello my
... friend'''
>>> s
... 'Hello my\nfriend'
>>> print(s)
Hello my
friend

Так как это r-строка, интерактивный интерпретатор преобразует перенос строки в символ '\n' и выводит текст в одну строку. Здесь вопросов нет. Все логично. Однако в случае с вызовом функции print(), мы видим что текст разбился на 2 строки.

Подскажите, в чем причина такого поведения функции print()?


Ответы (2 шт):

Автор решения: Сергей

Вы фактически выполняете print ('Hello my\nfriend'). Вот он и выводит 2 строки. Управляющий символ им управляет:-) Это же уже не r-строка.

А вот print (r'Hello my\nfriend') выведет вам одну строку, так как тут - r-строка.

→ Ссылка
Автор решения: Dmitry

В дополнение к уже данным ответам.

Поиграйтесь с методами строк. Пример

>>> s.__repr__()
"'Hello my\\nfriend'"
>>> repr(s)
"'Hello my\\nfriend'"
>>> s.__str__()
'Hello my\nfriend'

Можно прочитать про метод repr.

Переведу различие между str и repr из документации

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

→ Ссылка