TGViewer
Библиотека питониста | Python, Django, Flask Библиотека питониста | Python, Django, Flask @pyproglib · 37.3K subscribers
Post #7352 3.5K
✔️ Гайд по форматированию строк в Python: почему мы до сих пор спорим между %, .format() и f-строками

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

🐸 Библиотека питониста

#буст
  • 👍 14
  • ❤ 9
  • 🔥 2
More from @pyproglib
  1. Oct 3, 2026📚Напоминаем про наш полный курс «Самоучитель по Python для начинающих» Мы написали и собр…
  2. Oct 2, 2026🎹 Что делать после ChatGPT? Следующий шаг — AI-агенты. Они не просто отвечают на запросы,…
  3. Sep 30, 2026🔥 Последний день для разработчиков AI уже пишет код. Теперь важнее научиться встраивать е…
  4. Sep 25, 2026🔥 Курс «ИИ для разработчиков» уже стартовал И мы решили открыть первое занятие всем — мож…
  5. Sep 20, 2026👻 94% токенов уходят не на код Анализ запусков показал: основная часть токенов уходит на…
  6. Sep 19, 2026📚Напоминаем про наш полный курс «Самоучитель по Python для начинающих» Мы написали и собр…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →