Python проповедует «должен быть один очевидный способ».
Но когда дело доходит до форматирования строк, у нас их целых четыре.
И все живы. И все работают. И все почему-то до сих пор используются.
Разбираемся, зачем Python столько лет собирал «зоопарк» способов форматирования и какой из них реально использовать в 2025 году.
🦖 C-style форматирование (%)
Самый старый способ, наследие времён динозавров и языка C.
Работает, но читать это — страдание:
"Error in %s at %d" % (module, line)
А если случайно перепутать аргументы — привет, дебаг.
Лучше не использовать в новом коде. Но logging до сих пор на нём живёт — там он действительно нужен.
🔧 .format() — попытка навести порядок
Пришло в Python 3 и казалось, оно победит. Фигурные скобки, именованные аргументы, красота:
"{host}:{port}".format(host="localhost", port=8080)Читается хорошо, работает надёжно. Но многословно, и имена приходится дублировать.
Использовать: можно, но есть лучше.
🚀 F-строки — любовь разработчиков с первого взгляда
Появились в Python 3.6 и моментально стали стандартом. Лаконично, быстро, удобно:
print(f"Hello, {user_name}")Даже вычисления внутри строки:
f"Pi = {math.pi:.3f}"И лучший инструмент для отладки —
=print(f"{user_id=}")Использовать: по умолчанию.
🧙 Сила Format Mini-Language
Настоящее волшебство начинается после двоеточия:
f"{price:,.2f}" # 1,234,567.89
f"{value:08b}" # бинарный с ведущими нулями
f"{date:%Y-%m-%d}" # форматирование датЭто отдельный маленький язык, и он мощнее, чем многие думают.
Когда f-строки — плохая идея:
1️⃣ Логи
F-строка вычислится всегда, даже если лог не будет выведен:
logging.debug(f"Result: {heavy_calc()}")Правильно:
logging.debug("Result: %s", heavy_calc)2️⃣ SQL
Не вздумайте:
f"SELECT * FROM users WHERE name = '{user_input}'"Лучше используйте параметры запросов.
Итоговая шпаргалка:
➡️ Используй f-строки всегда, если можно
➡️
.format() — когда шаблон живёт отдельно от кода➡️
% — только для logging➡️ SQL — только параметризованный
➡️ Mini-Language — must-know для красивого вывода
🔹 Курс «Программирование на языке Python»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
🐸 Библиотека питониста
#буст