Эквивалент строковой интерполяции Ruby в Python: решение
Пройдите тест, узнайте какой профессии подходите
Быстрый ответ
В Python строковую интерполяцию осуществляют с помощью f-строк. Просто добавьте префикс f
перед строкой и вставьте переменные или выражения в фигурные скобки:
user = "Алиса"
message = f"Привет, {user}!" # Выведет: Привет, Алиса!
Эта функция доступна начиная с Python 3.6.
Традиционные способы интерполяции строк
Раньше, до появления f-строк, интерполяция данных в строках выполнялась с использованием оператора %
, метода .format()
и класса string.Template
.
- Оператор
%
, напоминающийsprintf
в языках семейства C:
name = "Гвидо"
language = "Python"
print("%s создал %s. Это неопровержимый факт." % (name, language)) # Гвидо создал Python. Это неопровержимый факт.
- Метод
.format()
, предоставляющий возможности для более сложного форматирования:
item = "f-строки"
reason = "удобство"
print("Почему я предпочитаю {}? Ответ прост, ради {}.".format(item, reason)) # Почему я предпочитаю f-строки? Ответ прост, ради удобства.
- Класс
string.Template
служит для подстановки значений с использованием явного синтаксиса$
:
from string import Template
t = Template('Привет, $name!')
t.substitute(name='Алиса') # Привет, Алиса!
Новинка: f-строки
F-строки, или форматируемые строковые литералы, значительно облегчили процесс интерполяции, позволяя вставлять выражения прямо в строку.
- Вставка выражений:
import math
radius = 5
area = f"Площадь круга с радиусом {radius} равна {math.pi * radius ** 2:.2f}." # Сразу вычислили площадь круга.
Заметьте, :.2f
обеспечивает форматирование результата с двуми знаками после десятичной точки.
- Работа с сложными объектами:
class Developer:
def __init__(self, name, language):
self.name = name
self.language = language
dev = Developer("Алиса", "Python")
f"{dev.name} программирует на {dev.language}." # Это не магия, это Python.
- Расширенные возможности и вложенные выражения:
subtotal = 100
tax_rate = 0.05
f"Итоговая сумма с учётом налога: ${subtotal * (1 + tax_rate):.2f}" # Итоговая стоимость сразу видна.
Визуализация
Представим сравнение работы с интерполяцией строк в Python и Ruby в виде шеф-поваров, которые готовят блюда по индивидуальному заказу:
Шеф-повар Python (🐍): "Ваше уникальное блюдо: f'{name} с {flavor} вкусом!'" Шеф-повар Ruby (💎): "Ваше персональное блюдо: '#{name} с вкусом #{flavor}'!"
Хотя подходы отличаются, результат одинаков — динамически созданные строки.
# В Python
name = 'Python 3.6+'
flavor = 'сладким'
meal = f'{name} с {flavor} вкусом!' # Python 3.6+ с сладким вкусом!
# В Ruby
name = 'Ruby'
flavor = 'острым'
meal = "#{name} с вкусом #{flavor}!" # Ruby с острым вкусом!
Программируйте с удовольствием, используя f-строки
F-строки помогают разработчикам сделать код более простым, чистым и удобным для поддержки.
Укорочение кода и его улучшение читаемости
F-строки особенно полезны при составлении динамических SQL-запросов:
table_name = "users"
column_name = "last_login"
timestamp = "2023-04-01"
query = f"SELECT * FROM {table_name} WHERE {column_name} > '{timestamp}'" # Составление SQL-запросов стало несложнее.
Поддержка отладки
Отладка становится проще благодаря возможностям f-строк. Используйте =
внутри фигурных скобок, чтобы отобразить значение выражения:
score = 42
print(f"{score=}") # Выведет: score=42
Динамическое форматирование
F-строки идеально подходят для случаев, когда требуется динамическое форматирование:
from math import pi
precision = 3
width = 10
print(f"Пи ровно до {precision} знаков после запятой: {pi:{width}.{precision}}") # Элегантное форматирование.
Полезные материалы
- Python F-Strings: Как интерполировать и форматировать строки – Real Python – Подробная инструкция по f-строкам в Python.
- PEP 498 – Литеральная интерполяция строк – Спецификация, описывающая создание f-строк.
- Лучшие практики форматирования строк в Python – Real Python – Советы и трюки по форматированию строк в Python.
- Интерполяция строк в Python – GeeksforGeeks – Обзор методов интерполяции строк в Python.
- string — Руководство по операциям со строками — Документация Python 3.12.2 – Официальная документация по операциям со строками.
- PyFormat: Использование % и .format() в Python – Сравнение и руководство по использованию оператора
%
и метода.format()
. - Python Code Style Guide – Обзор принципов стиля кода и форматирования строк в Python.