Эквивалент строковой интерполяции Ruby в Python: решение

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

В Python строковую интерполяцию осуществляют с помощью f-строк. Просто добавьте префикс f перед строкой и вставьте переменные или выражения в фигурные скобки:

Python
Скопировать код
user = "Алиса"
message = f"Привет, {user}!" # Выведет: Привет, Алиса!

Эта функция доступна начиная с Python 3.6.

Кинга Идем в IT: пошаговый план для смены профессии

Традиционные способы интерполяции строк

Раньше, до появления f-строк, интерполяция данных в строках выполнялась с использованием оператора %, метода .format() и класса string.Template.

  1. Оператор %, напоминающий sprintf в языках семейства C:
Python
Скопировать код
name = "Гвидо"
language = "Python"
print("%s создал %s. Это неопровержимый факт." % (name, language)) # Гвидо создал Python. Это неопровержимый факт.
  1. Метод .format(), предоставляющий возможности для более сложного форматирования:
Python
Скопировать код
item = "f-строки"
reason = "удобство"
print("Почему я предпочитаю {}? Ответ прост, ради {}.".format(item, reason)) # Почему я предпочитаю f-строки? Ответ прост, ради удобства.
  1. Класс string.Template служит для подстановки значений с использованием явного синтаксиса $:
Python
Скопировать код
from string import Template

t = Template('Привет, $name!')
t.substitute(name='Алиса') # Привет, Алиса!

Новинка: f-строки

F-строки, или форматируемые строковые литералы, значительно облегчили процесс интерполяции, позволяя вставлять выражения прямо в строку.

  1. Вставка выражений:
Python
Скопировать код
import math
radius = 5
area = f"Площадь круга с радиусом {radius} равна {math.pi * radius ** 2:.2f}." # Сразу вычислили площадь круга.

Заметьте, :.2f обеспечивает форматирование результата с двуми знаками после десятичной точки.

  1. Работа с сложными объектами:
Python
Скопировать код
class Developer:
    def __init__(self, name, language):
        self.name = name
        self.language = language

dev = Developer("Алиса", "Python")
f"{dev.name} программирует на {dev.language}." # Это не магия, это Python.
  1. Расширенные возможности и вложенные выражения:
Python
Скопировать код
subtotal = 100
tax_rate = 0.05
f"Итоговая сумма с учётом налога: ${subtotal * (1 + tax_rate):.2f}" # Итоговая стоимость сразу видна.

Визуализация

Представим сравнение работы с интерполяцией строк в Python и Ruby в виде шеф-поваров, которые готовят блюда по индивидуальному заказу:

Шеф-повар Python (🐍): "Ваше уникальное блюдо: f'{name} с {flavor} вкусом!'" Шеф-повар Ruby (💎): "Ваше персональное блюдо: '#{name} с вкусом #{flavor}'!"

Хотя подходы отличаются, результат одинаков — динамически созданные строки.

Python
Скопировать код
# В 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-запросов:

Python
Скопировать код
table_name = "users"
column_name = "last_login"
timestamp = "2023-04-01"
query = f"SELECT * FROM {table_name} WHERE {column_name} > '{timestamp}'" # Составление SQL-запросов стало несложнее.

Поддержка отладки

Отладка становится проще благодаря возможностям f-строк. Используйте = внутри фигурных скобок, чтобы отобразить значение выражения:

Python
Скопировать код
score = 42
print(f"{score=}") # Выведет: score=42

Динамическое форматирование

F-строки идеально подходят для случаев, когда требуется динамическое форматирование:

Python
Скопировать код
from math import pi
precision = 3
width = 10
print(f"Пи ровно до {precision} знаков после запятой: {pi:{width}.{precision}}") # Элегантное форматирование.

Полезные материалы

  1. Python F-Strings: Как интерполировать и форматировать строки – Real Python – Подробная инструкция по f-строкам в Python.
  2. PEP 498 – Литеральная интерполяция строк – Спецификация, описывающая создание f-строк.
  3. Лучшие практики форматирования строк в Python – Real Python – Советы и трюки по форматированию строк в Python.
  4. Интерполяция строк в Python – GeeksforGeeks – Обзор методов интерполяции строк в Python.
  5. string — Руководство по операциям со строками — Документация Python 3.12.2 – Официальная документация по операциям со строками.
  6. PyFormat: Использование % и .format() в Python – Сравнение и руководство по использованию оператора % и метода .format().
  7. Python Code Style Guide – Обзор принципов стиля кода и форматирования строк в Python.