Как форматировать строки в Python (f-строки и формат)

Изучите лучшие методы форматирования строк в Python. Сравните современные f-строки, format() и процентное форматирование с примерами кода.

Попробуйте это решение в редакторе

Обзор

Форматирование строк — ежедневная необходимость для отображения переменных внутри сообщений, вывода журналов, печати отладочных данных консоли и создания веб-страниц. За прошедшие годы Python значительно усовершенствовал форматирование строк, предлагая множество вариантов безопасного и разборчивого создания динамических текстовых представлений.

В современном Python (3.6+) стандартным и наиболее популярным подходом является форматирование с помощью f-строк (форматированные строковые литералы). Добавляя к строке префикс `f` или `F`, вы можете вставлять выражения или переменные Python непосредственно в фигурные скобки `{}`. Эти выражения оцениваются во время выполнения, что делает f-строки быстрее и значительно более читабельными, чем старые методы форматирования.

В старых базах кода Python может использоваться метод `.format()` или процентное форматирование `%`. Несмотря на то, что они все еще поддерживаются, их использование в новом коде обычно не рекомендуется. f-строки также поддерживают мощные встроенные спецификаторы формата, позволяющие контролировать точность десятичных чисел (например, `{value:.2f}`), выравнивать текст или форматировать даты непосредственно внутри строковых переменных.

Код и вывод выполнения

Этот скрипт демонстрирует печать динамических текстовых блоков с использованием f-строк, форматирование чисел с плавающей запятой и использование .format().

name = "Alice"
age = 30
pi = 3.14159

# 1. Using modern f-strings (Recommended)
greeting_f = f"Hello, my name is {name} and I am {age} years old."
print("f-string:", greeting_f)

# 2. formatting floats (2 decimal places precision)
precision_f = f"Pi rounded: {pi:.2f}"
print(precision_f)

# 3. Using the older .format() method
greeting_format = "Hello, my name is {} and I am {}.".format(name, age)
print(".format():", greeting_format)
Терминальный выход
f-string: Hello, my name is Alice and I am 30 years old.
Pi rounded: 3.14
.format(): Hello, my name is Alice and I am 30.

Пошаговая реализация

  • Добавьте к строковому литералу префикс символа f (например, f'Hello...').
  • Вставляйте переменные или выражения непосредственно внутри фигурных скобок {} внутри строки.
  • Используйте спецификации формата, такие как :.2f, для обработки десятичного форматирования внутри фигурных скобок.

Часто задаваемые вопросы

Являются ли f-строки быстрее, чем форматирование .format() и %?

Да, f-строки оцениваются во время выполнения как оптимизированные операции с байт-кодом, что делает их быстрее, чем операторы .format() и %.

Могу ли я запускать функции или оценивать выражения внутри f-строк?

Да, любое допустимое выражение Python (включая математические операции, вызовы функций и поиск по словарю) можно оценить внутри фигурных скобок.

Связанные темы

Рекомендуемые ресурсы Python

Расширьте свои знания с помощью соответствующих интерактивных руководств, шпаргалок и сравнений кода.