Форматирование строк: f-строки, .format() и %

Зачем нужно форматирование строк? 🤔

Представь ситуацию: ты пишешь программу, которая приветствует пользователя по имени и сообщает его баланс. Без форматирования это выглядело бы так:

name = "Анна"
balance = 1234.56
print("Привет, " + name + "! Твой баланс: " + str(balance) + " руб.")

Громоздко, правда? Форматирование строк делает код чище, а жизнь — проще! В Python есть три основных способа: %, .format() и f-строки. Разберём каждый!


Старый добрый % (стиль printf)

Этот метод пришёл из языка C и знаком многим программистам.

# Базовый пример
name = "Максим"
print("Привет, %s!" % name)  # %s - строка

# Несколько переменных
price = 99.99
quantity = 3
print("Цена: %f руб., Количество: %d" % (price, quantity))  # %f - float, %d - int

Спецификаторы формата:

  • %s — строка
  • %d — целое число
  • %f — дробное число (можно указать точность: %.2f)

Плюсы:

  • Простота для базовых случаев
  • Знакомый синтаксис для тех, кто работал с C

Минусы:

  • Не самый читаемый код при множестве переменных
  • Ограниченные возможности

Метод .format() — золотая середина ️

Появился в Python 2.6 и стал стандартом на многие годы.

# Простой пример
username = "Ольга"
print("Добро пожаловать, {}!".format(username))

# Позиционные аргументы
item = "кофе"
cost = 150
print("{} стоит {} руб.".format(item, cost))

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

# Форматирование чисел
pi = 3.14159265
print("Число π: {:.2f}".format(pi))  # Округление до 2 знаков

Фишки: - Можно повторять аргументы: {0} {0} {1}.format("A", "B") → "A A B" - Выравнивание текста: {:>10} (вправо), {:<10} (влево), {:^10} (по центру) - Работа со словарями: "Имя: {data[name]}".format(data={"name": "Мария"})

Почему это круто?
Гибкость и читаемость на уровне, которого хватает для большинства задач!


F-строки — новый король форматирования 👑

Появились в Python 3.6 и мгновенно стали фаворитами! Буква f перед строкой включает магию.

# Просто и понятно
user = "Сергей"
coins = 42
print(f"Игрок {user} собрал {coins} монет!")

# Вычисления прямо в строке
a, b = 5, 10
print(f"Сумма: {a + b}")  # 15

# Форматирование чисел
temperature = 23.45678
print(f"Температура: {temperature:.1f}°C")  # 23.5°C

# Вызов функций
def greet(name):
    return f"Привет, {name}!"

print(f"{greet('Кирилл')} Как дела?")

Суперспособности f-строк:

  • Максимальная читаемость — переменные прямо в тексте!
  • Поддержка любых выражений внутри {}
  • Быстрее .format() и % (да, это важно для производительности!)

Осторожно:
Не используй f-строки для строк, которые могут содержать пользовательский ввод — это риск инъекций кода!


Что выбрать?

  • Для нового кода на Python 3.6+ — всегда f-строки! Они читаются как обычный текст.
  • Для совместимости с старыми версиями.format().
  • % — только если поддерживаешь legacy-код или любишь ностальгировать.
# Сравнение всех методов
name = "Данила"
project = "YouTube-канал"

# %
print("Привет, %s! Заходи на %s!" % (name, project))

# .format()
print("Привет, {}! Заходи на {}!".format(name, project))

# f-строка
print(f"Привет, {name}! Заходи на {project}!")

Продвинутые примеры 🚀

Форматирование дат

from datetime import datetime
now = datetime.now()
print(f"Сейчас: {now:%d.%m.%Y %H:%M}")  # 25.06.2023 14:30

Работа с отступами

data = {"имя": "Алексей", "профессия": "разработчик"}
print(f"{'Данные пользователя':^30}\n{'-'*30}")
for key, value in data.items():
    print(f"{key.upper():<15}: {value}")

Выравнивание столбцов

products = [("Ноутбук", 999.99, 5), ("Мышь", 25.50, 12)]
for name, price, count in products:
    print(f"{name:<10} | {price:>8.2f} руб. | {count:03d} шт.")

Итоги 📝

  • f-строки — твой лучший друг в Python 3.6+ (быстро, читаемо, мощно)
  • .format() — надёжный инструмент для сложных случаев или старых версий
  • % — знай, но используй редко

Попробуй все три метода в деле — открой редактор и напиши несколько примеров прямо сейчас! Как говорит Данила Бежин: «Практика — ключ к мастерству в программировании». Его разборы сложных тем можно найти на YouTube: https://www.youtube.com/@DanilaBezhin.

Скрыть рекламу навсегда

📘 VK Видео — обучение без ограничений

Все уроки доступны без VPN, без блокировок и зависаний.

Можно смотреть с телефона, планшета или компьютера — в любое время.

▶️ Смотреть на VK Видео