В языке программирования Python 3.6, f строки начали появляться для улучшения читаемости кода и продуктивного форматирования. Маркируются литерой «f» перед кавычками. Разберемся с особенностями этого полезного инструмента, без которого сложно представить работу Python-программиста.
Синтаксис прямой и понятный. Перед открывающимися двойными или одинарными кавычками добавляется буква F, что делает строчку автоматически форматированной. Это продуктивно использовать для повышения читабельности и наглядности кода.
>>> "стандартная строка">>> f"f-строка"
F-строка может быть отформатирована почти так же, как методом str.format, при этом облегчается интерполяция литеральной строки. Это продуктивный способ встраивания выражения Python в строковые литералы для форматирования.
При этом за такое преимущество не потребуется жертвовать производительностью. Скорость не падает.
Согласно сведениям, полученным с использованием модуля timeit, следует, что на фоне других способов f-строки оказались наиболее производительным инструментом.
Форматирование
Форматирование — оформление кода методами, предложенными языком программирования.
Раньше в Python использовали способы, которые были не лишены множества недостатков:
Процентное форматирование. Поддерживает вариант несложной корректировки, но при этом ограничен числами двойной точности
Шаблонные строки. Работают с аргументами слов-запросов (ключей)
String format. Функция внедрена для устранения проблемы форматирования
F-строки работают по аналогичному принципу, что и format, но удаляют многослойность этой функции.
Мини-язык спецификаций
Дополнительное преимущество — поддержка мини-языка спецификаций Python. Эта особенность открывает возможность внедрить в модификаторы новые корректирующие операции.
Мини-язык — универсальный инструмент, который помимо конструкций для работы с датами, числами, помогает обрабатывать текст.
Такие возможности доступны в других способах форматирования, но применение f-строк ускоряет этот процесс.
Работа с числами, датой, временем
При необходимости округлить число с плавающей точкой до N десятичных дробей рекомендуется использовать precision c f-типом. Для округления числа применяют знак %. Для разделения тысяч задействуется запятая (,).
С помощью инструмента можно легко форматировать календарные числовые показатели. Дата и время задаются по тем же принципам, что и в datetime.strftime. Примечательно, что тут заложено больше способов работы со значениями, чем указано в инструкции к языку программирования.
Возможно, создатели Python пошли на такой шаг, понимая, что эти показатели зависят также от используемой платформы. Однако это не значит, что такими вариантами нельзя пользоваться. Не стоит забывать о %x, %X, которые также представляют собой способы установки времени и даты.
Отладка
Начиная с Python 3.8, функционал расширился за счет новых вариаций ввода переменных вместе со значениями. Такую функцию программисты называют «отладкой». Применение нового инструмента упростило процесс. Вместо того чтобы записывать имя и значение, программисты могут прописать это только внутри самого кода: {variable_name}.
Стоит отметить, что процесс стал более ясным, несмотря на необходимость обертывать переменные специфическим синтаксисом. Перепутать порядок вводимых переменных теперь невозможно. Также сохраняются пробелы, полезность которых можно легко оценить при работе с запутанными логами в терминале.
x = 23
y = 12
print(f"x = {x}, y = {y}") # x = 23, y = 12
print(f"{x = }, {y = }") # Лучше! (3.8+) # x = 23, y = 12
print(f"{x:.3f}") # x = 23.000
Кроме продуктивности при отладке, гибкость f-строк оказалась крайне полезна при форматировании. Читать, писать, поддерживать ввод стало гораздо проще в сравнении с конкатенацией.
Выравнивание
Необходимость выравнивания слева направо встречается нечасто. Однако именно этот процесс помогает понять, как включать нули слева (справа) от числа, что крайне полезно при корректировке числовых значений цифр.
Для выравнивания по правому краю используют синтаксис, выбирая только элемент width. Если потребовалось сделать, предположим, шесть пробелов, то нужно добавить тот же элемент со значением «8».
При выравнивании слева используется ( _ ) в качестве символа-заполнителя. Для закрепления width со значением «8» добавляется «6» и используемый код.
Вложенные строки
Применяется, когда стандартного набора инструментов для форматирования не хватает. Например, можно легко добавить знак $ к цифре с плавающей точкой.
number = 345.858
formatted_number = f"${number:.3f}"
print(f"{formatted_number:>10s}") # ' $345.858'
Итог
С появлением Python 3.6 f-строки стали универсальным способом форматирования. Часто программисты недооценивают инструмент, поскольку не видят скрытый потенциал. При том, что львиная доля этих «неизвестных» возможностей раскрыта в инструкции по Python. F-строки просты в применении и чрезвычайно продуктивны. Поэтому игнорировать такой ценный инструмент не стоит.