Что такое 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() и сопоставимы или быстрее современного %-форматирования. Это не всегда критично по одному месту, но полезно в массе (логирование, шаблоны сообщений).

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

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

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

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

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

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