Что такое f-строки? Чем они лучше .format() и %-форматирования?

f‑строки (formatted string literals) — это строковые литералы с префиксом f, внутри которых можно напрямую писать Python‑выражения в фигурных скобках: f"Привет, {name}!". По сравнению с str.format() и %-форматированием f‑строки обычно читабельнее, позволяют встраивать любые выражения прямо в строку и во многих случаях работают быстрее.

Подробный ответ

Что такое f‑строки?

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

name = "TeoBrain"
score = 42
msg = f"Платформа {name}, ваш результат: {score}"
pi_msg = f"Число пи ≈ {3.14159:.2f}"     # форматирование прямо в фигурных скобках
calc = f"2 + 2 = {2 + 2}"               # выражение внутри {}

Под капотом f‑строка превращается в выражение, которое вычисляет все вложенные части и форматирует их через стандартный протокол __format__.

Чем f‑строки удобнее .format() и %

Читаемость: переменные видны там, где используются.

# %-форматирование
msg = "User %s has %d points" % (name, points)
# .format()
msg = "User {} has {} points".format(name, points)
# f‑строка
msg = f"User {name} has {points} points"

В f‑строке не нужно сопоставлять порядок аргументов и плейсхолдеров — сразу видно, где какая переменная.

Встроенные выражения и форматирование. В str.format() и "%…" вы разделяете «строку» и «данные», а f‑строка позволяет писать выражения прямо внутри:

f"Через год вам будет {age + 1}"
f"Цена: {price:.2f} BYN"
f"{user.first_name} {user.last_name}"

Производительность. Измерения показывают, что f‑строки часто быстрее, чем .format() и во многих сценариях не уступают современным реализациям %-форматирования. Для backend‑кода это не критично в одной строке, но заметно при большом количестве форматирований (логирование, генерация ответов).

Единый современный подход. PEP 498 прямо описывает f‑строки как современный, рекомендуемый способ интерполяции строк в Python 3.6+. В новых проектах, где вы контролируете версию Python, использование f‑строк — де‑факто стандарт.

Для полноты можно отметить: % — старый синтаксис в стиле C, всё ещё используется в некоторых местах, но менее гибок и менее выразителен. .format() остаётся полезным, когда формат шаблона отделён от данных или когда шаблон задаётся извне (конфиг, перевод), где f‑строку использовать нельзя напрямую.

Как ответить на собеседовании

F‑строки — это форматированные строковые литералы: строка с префиксом f, внутри которой можно писать выражения в {}. Они читаются проще, чем .format() и старое %-форматирование, потому что переменные видны прямо в тексте, позволяют сразу указывать формат ({price:.2f}) и обычно работают быстрее. В современном коде на Python 3.6+ f‑строки — основной, рекомендуемый способ форматирования строк.

Оцени свой прогресс

Честно оцени своё понимание этого вопроса, чтобы мы могли построить твой учебный трек максимально эффективно.
Читать в блоге