Отображение многостроковых 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-строка.
В дополнение к уже данным ответам.
Поиграйтесь с методами строк. Пример
>>> s.__repr__()
"'Hello my\\nfriend'"
>>> repr(s)
"'Hello my\\nfriend'"
>>> s.__str__()
'Hello my\nfriend'
Можно прочитать про метод repr.
Переведу различие между str и repr из документации
Функция
strпредназначена для возврата представлений, которые удобочитаемы для человека, в то время какreprпредназначена для генерирования представлений, которые может прочитать интерпретатор. (или вызовет SyntaxError, если нет эквивалентного синтаксиса). Для объектов, которые не имеют конкретного представления удобного для человека, str() вернет то же значение, что и repr().