Вопрос 11 из 16

Основы Python

Как выполняется интерполяция строк?

Показать ответ

Короткий ответ

  • f-строки: f"Hello {name}"
  • Метод format(): "Hello {}".format(name)
  • Оператор %: "Hello %s" % name

Развернутый ответ

Интерполяция строк в Python позволяет встраивать выражения и переменные внутрь строковых литералов. Вот основные современные способы:


1. f-строки (Python 3.6+) — рекомендуемый способ

name = "Анна"
age = 25

# Базовый синтаксис
message = f"Привет, {name}! Тебе {age} лет."
print(message)  # Привет, Анна! Тебе 25 лет.

# Вычисления внутри f-строк
print(f"Через 5 лет тебе будет {age + 5} лет.")

# Форматирование чисел
price = 19.99
print(f"Цена: {price:.2f} руб.")  # Цена: 19.99 руб.

# Многострочные f-строки
html = f"""
<div>
  <h1>{name}</h1>
  <p>Возраст: {age}</p>
</div>
"""

2. Метод format()

# Позиционные аргументы
"Привет, {}! Тебе {} лет.".format(name, age)

# Именованные аргументы
"Имя: {name}, Возраст: {age}".format(name=name, age=age)

# Форматирование чисел
"Баланс: {:.2f}".format(123.456)  # Баланс: 123.46

3. %-форматирование (устаревший способ)

# Для подстановки значений
"Привет, %s! Тебе %d лет." % (name, age)

# Форматирование чисел
"Процент: %.1f%%" % 99.5  # Процент: 99.5%

4. Шаблоны строк (string.Template)

from string import Template
t = Template("Привет, $name! Тебе $age лет.")
print(t.substitute(name=name, age=age))

5. Продвинутые возможности f-строк

# Вызов функций
print(f"Имя в верхнем регистре: {name.upper()}")

# Доступ к элементам коллекций
colors = ["red", "green", "blue"]
print(f"Первый цвет: {colors[0]}")

# Использование выражений
a, b = 5, 10
print(f"Сумма: {a + b}")

# Вывод repr и str
value = "текст"
print(f"{value!r}")  # repr: 'текст'
print(f"{value!s}")  # str: текст

6. Форматирование в f-строках

Тип Пример Результат
Числа f"{1000:,}" 1,000
Проценты f"{0.25:.1%}" 25.0%
Дата f"{datetime.now():%Y-%m-%d}" 2023-05-15
Выравнивание f"{'text':>10}" " text"

Рекомендации:

  • Используйте f-строки для Python 3.6+ (самый читаемый и производительный вариант)
  • Метод format() подходит для сложных случаев или когда нужна совместимость с более старыми версиями Python
  • Избегайте %-форматирования в новом коде
  • Шаблоны полезны, когда строки задаются пользователем

F-строки обеспечивают максимальную выразительность и производительность для интерполяции строк в современных версиях Python.