f-строки в Python: удобный вывод переменных
Автор: Казачкин Даниил Михайлович · Обновлено
f-строка позволяет вставлять значения прямо в текст. Перед открывающей кавычкой ставится буква f, а выражения помещаются в фигурные скобки. Python вычисляет каждое выражение и преобразует результат в текст во время создания строки.
Сообщение без цепочки плюсов
name = 'Игорь'
score = 73
maximum = 100
print(f'{name} набрал {score} из {maximum}')
print(f'До максимума осталось {maximum - score}')Результат запуска:
Игорь набрал 73 из 100
До максимума осталось 27В первых скобках стоят переменные, во вторых — арифметическое выражение. Вычисление выполняется до формирования итогового текста. Такой код легче читать, чем несколько вызовов str и длинная цепочка конкатенаций.
Форматирование числа
После двоеточия внутри скобок задаётся формат. Например, f'{price:.2f}' показывает два знака после точки, а f'{part:.1%}' переводит долю 0.375 в строку 37.5%. Формат меняет представление, а не исходное значение переменной.
Если забыть букву f, текст '{name}' будет выведен буквально. Незакрытая фигурная скобка приведёт к SyntaxError. Двойные скобки {{ и }} нужны, когда сами фигурные скобки должны появиться в результате. Не помещайте внутрь сложную многострочную логику: предварительное вычисление в переменной обычно понятнее.
Квитанция для тренировки
Задайте название товара, цену и количество. Вычислите сумму и выведите одну строку вида Тетрадь: 3 × 45.50 = 136.50 руб.. Проверьте отдельно произведение и формат с двумя знаками. Затем измените количество на ноль и цену на дробное значение. Урок освоен, если вы можете показать, где вычисляется сумма и почему добавление формата не округляет сохранённую переменную навсегда.
Граница форматирования
Сформируйте отчёт для числа 1234.5678 в трёх видах: два знака после точки, поле шириной десять символов и число с разделителем тысяч. Сохраните каждую f-строку в отдельной переменной и докажите, что исходное число осталось прежним. Затем попробуйте вывести буквальные фигурные скобки вокруг результата. Намеренно уберите букву f и опишите разницу не словом «не работает», а точным полученным текстом. Завершите пример одной строкой для пользователя и отдельным числом для дальнейших вычислений: представление и данные не следует смешивать.
Практикум: отчёт с выравниванием и форматами
Создайте строку отчёта с именем, набранными баллами и процентом. Выведите процент с одним знаком, баллы в поле фиксированной ширины и отдельное сообщение о разнице до максимума. Проверьте короткое и длинное имя, нулевой и полный результат. Сравните f-строку с конкатенацией, где числа требуют ручного str. Не прячьте расчёт сложного правила внутрь шаблона: вычислите процент заранее и дайте переменной предметное имя.
Контрольная точка
Какая часть f-строки вычисляется как Python-выражение, а какая остаётся буквальным текстом? Найдите ошибку в строке с забытыми фигурными скобками и предскажите результат до запуска.
Частые вопросы
Можно ли использовать вычисления внутри f-строки?
Да, но короткие выражения читаются лучше. Если формула имеет предметный смысл или повторяется, вынесите её в именованную переменную. Так проще тестировать вычисление отдельно от оформления результата.