Menu
Русский

f-строки в Python: форматирование, выражения и спецификаторы для чисел

Практическое руководство по f-строкам в Python — как вставлять переменные и выражения, форматировать числа и даты, и когда имеет смысл взять старые стили форматирования.

Тот формат, которым ты реально будешь пользоваться

f-строки — это способ по умолчанию, которым современный Python-код вставляет значения в текст. Поставь f перед открывающей кавычкой, и всё, что внутри {...}, превращается в живое выражение:

main.py
Output
Click Run to see the output here.

Три вещи, которые здесь стоит заметить. Префикс f превращает весь литерал в шаблон. Фигурные скобки — это точки подстановки. А выражение внутри скобок вычисляется в тот момент, когда выполняется print, а не когда строка была написана.

Ты будешь писать f-строки куда чаще любого другого стиля форматирования. Они короче, чем "Hello, " + name + ".", читаемее, чем "Hello, %s." % name, и гибче, чем .format().

Внутри может быть что угодно, что вычисляется

В скобки можно писать не только имена переменных. Подойдёт любое выражение Python:

main.py
Output
Click Run to see the output here.

Вызовы методов, индексирование, арифметика, условные выражения — всё сгодится. Единственное правило: держи то, что между скобками, коротким. Если внутри подстановки получается расчёт на три строки, сначала вычисли результат в переменную и подставь её имя.

Форматирование чисел

Двоеточие после выражения открывает спецификатор формата — мини-язык, управляющий отображением значения:

main.py
Output
Click Run to see the output here.

Коротко про каждый кусочек:

  • .2f — число с плавающей точкой, два знака после точки. Округляется при выводе.
  • , — запятая как разделитель тысяч. Работает и для int, и для float.
  • .1% — умножает на 100 и добавляет %. Удобно для долей и коэффициентов.
  • .2e — научная запись с двумя знаками после точки.

Их можно комбинировать. f"{total:,.2f}" даст "1,234.57".

Заполнение, ширина и выравнивание

Для аккуратного вывода в колонки:

main.py
Output
Click Run to see the output here.

<10 означает «выравнивание по началу строки, дополнить до 10 символов». >5 — «выравнивание по концу строки, дополнить до 5». Для центрирования используется ^.

Чтобы заполнять не пробелами, а чем-то другим, поставь символ-заполнитель перед флагом выравнивания:

main.py
Output
Click Run to see the output here.

Форматирование дат

Тот же синтаксис {value:spec} работает и для объектов datetime:

main.py
Output
Click Run to see the output here.

Спецификация после двоеточия — это строка формата strftime. Любой %-код, который принимает strftime, тут тоже работает — подробно мы разберём их на странице про datetime.

Трюк с = для отладки

Одна из самых полезных малозаметных фишек: поставь = после выражения, и Python выведет и текст выражения, и его значение:

main.py
Output
Click Run to see the output here.

Получаешь count=7, price=19.99, count * price=139.93. Это полный эквивалент print("count =", count) в три символа. Запомни на случай, когда захочется по-быстрому выкинуть пару значений в лог при отладке.

Экранирование фигурных скобок

Если нужен литеральный { или } в выводе, удваивай их:

main.py
Output
Click Run to see the output here.

Одинарные скобки открывают выражение; {{ и }} — это { и } в выводе.

Многострочные f-строки

f-строки прекрасно дружат с тройными кавычками — это удобно, когда нужно собрать небольшой шаблон прямо в коде:

main.py
Output
Click Run to see the output here.

Длинную f-строку можно разбить на несколько соседних строковых литералов — Python склеит их автоматически:

main.py
Output
Click Run to see the output here.

Где тебе ещё встретятся старые стили

В существующем коде ты наткнёшься на два более старых стиля форматирования:

main.py
Output
Click Run to see the output here.

Все три дают одинаковый результат. В девяти случаях из десяти f-строки выигрывают по читаемости. К .format() стоит обращаться, когда нужно один раз построить шаблон и многократно его применять; % используй только если поддерживаешь старый код, где он уже есть.

Для чего f-строки не годятся

Две ситуации просят другого инструмента.

Сборка SQL-запросов. Никогда не вставляй пользовательский ввод в SQL-строку через f-строку. Используй параметризованные запросы из библиотеки базы данных. f-строка здесь — прямой путь к SQL-инъекции.

Сборка переводимого UI-текста. Если твоё приложение поддерживает несколько языков, нужен шаблон, который смогут подхватить внешние инструменты перевода — обычно это _(...) из gettext или фреймворковый хелпер. f-строка запекает структуру в исходнике, что сильно усложняет перевод.

Для всего остального — логов, вывода в консоль, сборки URL, строк конфигурации, форматирования чисел для вывода — f-строки именно то, что нужно.

Дальше: числа и булевы значения

f-строки много работают с числами, так что стоит чуть глубже разобраться с числовыми типами. Об этом — на следующей странице.

Часто задаваемые вопросы

Что такое f-строка в Python?

f-строка — это строковый литерал с префиксом f, в котором всё, что заключено в {...}, заменяется во время выполнения значением выражения. f"Привет, {name}" подставляет текущее значение name в строку.

Когда f-строки появились в Python?

В Python 3.6. Все современные версии Python их поддерживают, так что ты смело можешь использовать f-строки в любом коде на Python 3. Старые стили форматирования (% и .format()) всё ещё работают, но в большинстве случаев читаются хуже.

Как отформатировать число до двух знаков после запятой в Python?

Используй спецификатор формата после двоеточия внутри скобок: f"{price:.2f}". .2f означает «число с плавающей точкой, два знака после запятой». Это влияет только на отображение; само число не меняется.

Можно ли помещать внутрь f-строки любое выражение?

Да — арифметику, вызовы методов, вызовы функций, условные выражения. И f"{name.upper()}", и f"{price * 1.2:.2f}" работают как надо. Держи выражения короткими; если внутри скобок становится громоздко, сначала вычисли значение в переменную.

Учитесь программировать с Coddy

НАЧАТЬ