Глава 8 · Играем с буквами и словами

Форматирование строк

f-строки — главный современный инструмент вставки значений в текст. Разберём их по-настоящему полно: от простой подстановки до выравнивания в столбик.

Мы уже пользовались f-строками начиная с главы 4 — теперь разберём форматирование строк по-настоящему полно.

f-строка — простая подстановка

Перед открывающей кавычкой ставится буква f, а внутри фигурных скобок {} — имя переменной. Python сам подставит туда значение:

f_stroka_prostaya.py
name = "Ада"
print(f"Привет, {name}!")
# Привет, Ада!

Внутри {} можно писать выражения

Это не просто подстановка имени — внутри скобок работает ЛЮБОЕ Python-выражение: арифметика, вызов метода, что угодно:

f_stroka_vyrazheniya.py
age = 5
print(f"Через год будет {age + 1}.")           # Через год будет 6.

name = "cartesian"
print(f"Заглавными: {name.upper()}")            # Заглавными: CARTESIAN

Форматирование чисел: точность и разделители

После значения можно поставить двоеточие и спецификатор формата — как именно отобразить число:

format_specifikatory.py
pi = 3.14159265
print(f"Пи округлённо: {pi:.2f}")   # Пи округлённо: 3.14 — 2 знака после запятой
print(f"{1234567:,}")               # 1,234,567 — разделитель тысяч
print(f"{0.4567:.1%}")              # 45.7% — доля как проценты

.2f читается так: f — число с плавающей точкой, .2 — округлить до 2 знаков после запятой.

Выравнивание и ширина

Число после двоеточия (без точки) задаёт минимальную ширину поля — удобно для выравнивания текста в столбик:

vyravnivanie.py
for name, score in [("Ада", 98), ("Алан", 87), ("Грейс", 100)]:
    print(f"{name:<8} {score:>5}")
# Ада        98
# Алан       87
# Грейс     100
СпецификаторЗначение
{value:<10}по левому краю, ширина поля 10
{value:>10}по правому краю, ширина поля 10
{value:^10}по центру, ширина поля 10
{value:.2f}дробное число, 2 знака после запятой
{value:,}разделитель тысяч запятой
Отладочный приём: f"{{value=}}"
Если внутри f-строки после выражения поставить знак = — Python выведет и само выражение, и его значение. Отлично подходит для быстрой проверки: print(f"{{age=}}") выведет age=28 — без ручного набора текста «age =».
Форматирование строк: % → .format() → f-строки
Классический подход (% и .format())
name = "Cartesian"
age = 5

# оператор % — самый старый способ
print("Привет, %s! Тебе %d лет." % (name, age))

# .format() — более новый, но всё ещё многословный
print("Привет, {}! Тебе {} лет.".format(name, age))
Современный Python 3.14 (f-строки)
name = "Cartesian"
age = 5

# f-строка — значения прямо внутри {}
print(f"Привет, {name}! Тебе {age} лет.")

# работают и выражения, не только переменные:
print(f"Через год будет {age + 1}.")
Что использовать сегодня: f-строки — они появились в Python 3.6 и с тех пор являются стандартом. Оператор % — самый старый способ, доставшийся от языка Си, всё ещё встречается в старом коде. .format() — промежуточный шаг между ними. f-строки читаются лучше всего: значение видно прямо там, где оно будет подставлено, и можно писать любые выражения, а не только имена переменных.
★★ Самостоятельная задача
Чек «на столе»

Выведите строку «Итого: 1234.5 → 1 234.50 ₽» (используя :,.2f) для суммы 1234.5, и отдельно — «Скидка: 15.0%» для доли 0.15 (используя :.1%).

Практика: %, .format() и f-строки
Интерактивный ноутбук прямо в браузере — Python 3.14 через Pyodide, без установки
Открыть практику →