Как работает разрыв строки при возврате return?
Как вывести f-строку в выводе return в несколько строк?
Имеем такой код:
class SomeClass:
def __init__(self, attr1, attr2, attr3):
self._attr1 = attr1
self._attr2 = attr2
self._attr3 = attr3
@property
def attr1(self):
return self._attr1
@attr1.setter
def attr1(self, value):
self._attr1 = value
@property
def attr2(self):
return self._attr2
def set_attr2(self, value):
self._attr2 = value
attr2 = property(fset=set_attr2)
def show_info(self):
return f'attr1: {self.attr1}' + f"\n" + f'attr2: {self.attr2}'
Вводим в консоли:
class1.show_info()
Получаем:
'attr1: Attr1\nattr2: Attr2'
При использовании:
return f'attr1: {self.attr1}\nattr2: {self.attr2}'
результат тот же.
Вывод в идеале должен быть таким:
attr1: Attr1
attr2: Attr2
Ответы (1 шт):
return просто возвращает значение строки "как есть", он ничего никуда не выводит. Если же вы сами выводите результат работы вашей функции в интерактивную консоль IPython (в ячейке Jupyter Notebook или в консоли PyCharm), то фактически при этом у показываемых объектов вызывается метод repr, чтобы более наглядно показать вам их содержимое. То есть как будто вызывается следующий код (можете сами запустить такой код с вашей строкой и убедиться):
print(repr(строка)) # строка или любой другой объект
В результате у строки показываются все спецсимволы в "сыром" виде. Хотите печатать строку так, чтобы управляющие символы делали то, что они должны делать при выводе на консоль (например, переводить строку) - просто печатайте строку через print и всё будет как нужно.