Что такое 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‑строки — базовый способ форматирования строк.