← Все вопросы

Как форматировать строку через f-string в Python?

Задан 15 месяцев назад1.4к просмотров2 ответа
9

Видел в коде строки с буквой f перед кавычками и фигурными скобками внутри. Как это работает? Хочу подставлять переменные в текст и выводить число с двумя знаками после запятой. Чем f-string лучше старого форматирования?

2 ответа

14
✓ Принятый ответ — помог автору

f-string — это строка с буквой f перед кавычками, где в {...} можно вставлять переменные и выражения прямо по имени:

name = 'Аня'
age = 30
print(f'Меня зовут {name}, мне {age} лет')

Внутри скобок можно писать любые выражения и вызовы:

print(f'Через год будет {age + 1}')
print(f'Имя заглавными: {name.upper()}')

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

pi = 3.14159
print(f'{pi:.2f}')       # 3.14 — два знака после точки
print(f'{1000000:,}')    # 1,000,000 — разделитель тысяч
print(f'{0.25:.0%}')     # 25% — проценты
print(f'{42:5}')         # '   42' — ширина 5, выравнивание вправо
print(f'{42:<5}')        # '42   ' — влево
print(f'{255:x}')        # ff — в шестнадцатеричном виде

Чем f-string лучше старого '%s' % x и .format(): видно, какая переменная куда идёт, прямо в тексте — не надо считать позиции аргументов. Код читается как обычное предложение.

Частые ошибки:

  1. Забыть букву f — тогда {name} напечатается буквально, без подстановки.
  2. Чтобы вывести саму фигурную скобку, удвойте её: f'{{}}' даст {}.
  3. Внутри {} нельзя использовать кавычки того же типа, что и у всей строки — берите другой тип или экранируйте.

f-string доступны с Python 3.6 и сегодня это стандарт.

5

Полезный трюк для отладки (Python 3.8+) — знак = внутри скобок печатает и имя, и значение:

x = 42
print(f'{x=}')        # x=42
print(f'{x * 2 = }')  # x * 2 = 84

Очень удобно вместо print('x =', x) — не надо дублировать имя переменной вручную. Экономит время при поиске багов.

Ваш ответ

Войдите, чтобы ответить на вопрос.