В python3 .8 появилась новая функция самодокументирующиеся строки формата . Где обычно это делается:
>>> x = 10.583005244
>>> print(f"x={x}")
x=10.583005244
>>>
Теперь это можно сделать с меньшим количеством повторений:
>>> x = 10.583005244
>>> print(f"{x=}")
x=10.583005244
>>>
Это очень хорошо работает для однострочных строковых представлений. Но рассмотрим следующий сценарий:
>>> import numpy as np
>>> some_fairly_long_named_arr = np.random.rand(4,2)
>>> print(f"{some_fairly_long_named_arr=}")
some_fairly_long_named_arr=array([[0.05281443, 0.06559171],
[0.13017109, 0.69505908],
[0.60807431, 0.58159127],
[0.92113252, 0.4950851 ]])
>>>
Здесь первая строка не выравнивается, что (возможно) нежелательно. Я бы предпочел вывод следующего:
>>> import numpy as np
>>> some_fairly_long_named_arr = np.random.rand(4,2)
>>> print(f"some_fairly_long_named_arr=\n{some_fairly_long_named_arr!r}")
some_fairly_long_named_arr=
array([[0.06278696, 0.04521056],
[0.33805303, 0.17155518],
[0.9228059 , 0.58935207],
[0.80180669, 0.54939958]])
>>>
Здесь первая строка вывода также выровнена, но это лишает смысла повторение имени переменной дважды в операторе печати.
Примером является массив numpy, но это мог быть pandas фрейм данных и c.
Следовательно, мой вопрос: можно ли вставить символ новой строки после знака = в самодокументированных строках?
Я пытался добавить его вот так, но это не работает:
>>> print(f"{some_fairly_long_named_arr=\n}")
SyntaxError: f-string expression part cannot include a backslash
Я прочитал документы на формат-спецификация-мини-язык , но большая часть форматирования там работает только для простых типов данных, таких как целые числа, и мне не удалось добиться то, что я хотел, используя те, которые работают.
Извините за длинное описание.