Кот-наставник— Знаешь, что бесит в Python больше всего? Склеивать строки плюсами.
print("Привет, " + name + "!")— куча кавычек, легко запутаться.— Но в Python есть супер-инструмент — f-строки. Сейчас покажу, как они работают!
Проблема с конкатенацией
Допустим, нужно собрать строку из переменных. Старый способ
name = "Алексей"
age = 25
# Приходится превращать число в строку через str(),
# следить за пробелами... Ужас!
message = name + ", тебе " + str(age) + " лет!"Решение: f-строки
f-строка (formatted string literal) — это строка, перед которой стоит буква
f. Внутри такой строки можно писать переменные прямо в фигурных скобках{}.
Вот как выглядит тот же пример с f-строкой
name = "Алексей"
age = 25
# Новый способ с f-строкой:
message = f"{name}, тебе {age} лет!"
print(message)Алексей, тебе 25 лет!
Кот-наставник— Видишь букву
fперед кавычками? Это и есть ключ: она говорит Python — «внутри есть код, который надо выполнить». Всё, что в{}, Python заменяет на значения.— Даже числа сам превращает в строки!
f-строки появились в Python 3.6 (2016) и с тех пор стали стандартом. Если видишь код с % или .format() — скорее всего, он просто написан давно.
Как работают f-строки?
- Ставишь букву
f(илиF) перед открывающей кавычкой - Пишешь текст как обычно
- Где нужна переменная — оборачиваешь её в
{}
Простой пример
score = 1000
print(f"Твой счёт: {score} очков")Твой счёт: 1000 очков
Python видит f"...", находит всё что в {}, вычисляет и подставляет результат в строку.
Выражения внутри f-строк
Внутри {} можно не только писать переменные, но и выполнять любые выражения:
Арифметика внутри f-строки
a = 5
b = 10
print(f"Сумма: {a + b}")
print(f"Половина от b: {b / 2}")
print(f"a в квадрате: {a ** 2}")Сумма: 15 Половина от b: 5.0 a в квадрате: 25
Работают вызовы функций и методы строк — что угодно
name = "python"
print(f"Язык: {name.upper()}")
print(f"Длина: {len(name)} символов")Язык: PYTHON Длина: 6 символов
Форматирование чисел в f-строках
Одна из самых полезных фич f-строк — управление форматом вывода через двоеточие :.
Округление дробных чисел
Управляем количеством знаков после точки
score = 100 / 3
print(f"Обычный вывод: {score}")
print(f"2 знака после точки: {score:.2f}")
print(f"1 знак: {score:.1f}")
print(f"Без дробной части: {score:.0f}")Обычный вывод: 33.333333333333336 2 знака после точки: 33.33 1 знак: 33.3 Без дробной части: 33
.2f означает: 2 знака после точки, формат float. Меняй цифру — меняется точность.
Разделитель тысяч
Большие числа с разделителями
population = 12345678
print(f"Население: {population:,}")
print(f"С пробелами: {population:_}")Население: 12,345,678 С пробелами: 12_345_678
Проценты
Python сам умножает на 100 и добавляет %
ratio = 0.856
print(f"Точность модели: {ratio:.1%}")Точность модели: 85.6%
Форматирование дат
f-строки умеют форматировать объекты datetime через спецификаторы strftime:
from datetime import datetime
now = datetime.now()
print(f"Сегодня: {now:%d.%m.%Y}")
print(f"Время: {now:%H:%M}")
print(f"Полный формат: {now:%d %B %Y, %A}")Сегодня: 20.05.2026 Время: 17:30 Полный формат: 20 мая 2026, вторник
Отладочный формат = (Python 3.8+)
Добавь = после выражения — Python выведет и имя переменной, и её значение:
x = 42
name = "Alice"
print(f"{x=}")
print(f"{name=}")
print(f"{x * 2=}")x=42 name='Alice' x * 2=84
Выравнивание текста
Полезно для таблиц и красивого вывода в консоли:
Выравниваем столбцы
items = [("Python", 95), ("JavaScript", 82), ("Go", 71)]
for lang, score in items:
print(f"{lang:<12} | {score:>5} баллов")var1
Спецификаторы выравнивания:
:<12— выравнивание влево, ширина 12 символов:>5— выравнивание вправо, ширина 5 символов:^10— по центру, ширина 10 символов
Многострочные f-строки
Для длинных текстов используй тройные кавычки
name = "Алексей"
level = 5
xp = 1250
profile = f"""
Игрок: {name}
Уровень: {level}
Опыт: {xp} XP
До следующего уровня: {2000 - xp} XP
"""
print(profile)Игрок: Алексей\n Уровень: 5\n Опыт: 1250 XP\n До следующего уровня: 750 XP
Внутри {} работает тернарный оператор — можно выбирать текст по условию прямо в строке:
Тернарный оператор в f-строке:
age = 17
print(f"Статус: {'взрослый' if age >= 18 else 'несовершеннолетний'}")
score = 85
print(f"Результат: {'сдал' if score >= 60 else 'не сдал'}")
items = []
print(f"Корзина: {'пуста' if not items else f'{len(items)} товаров'}")Статус: несовершеннолетний Результат: сдал Корзина: пуста
Вложенные f-строки (Python 3.12+)
Начиная с Python 3.12, внутри {} можно использовать другие f-строки — без ограничений на кавычки:
Вложенные f-строки:
users = ["Алексей", "Мария", "Иван"]
# Python 3.12+: f-строка внутри f-строки
print(f"Пользователи: {', '.join(f'@{name.lower()}' for name in users)}")Пользователи: @алексей, @мария, @иван
f-строки vs другие способы форматирования
| Способ | Синтаксис | Когда появился |
|---|---|---|
| Конкатенация | "Привет, " + name | Была всегда |
| %-форматирование | "Привет, %s" % name | Python 2 |
| .format() | "Привет, {}".format(name) | Python 2.6 |
| f-строки | f"Привет, {name}" | Python 3.6 |
f-строки — самый читаемый и быстрый способ. Используй их по умолчанию. Исключение: когда строка-шаблон хранится в переменной (тогда нужен .format()).
Частые ошибки
Сравни
name = "Мир"
print("Привет, {name}!") # Без f — просто текст
print(f"Привет, {name}!") # С f — подстановкаПривет, {name}!
Привет, Мир!Экранирование фигурных скобок
print(f"Словарь: {{'key': 'value'}}")Словарь: {'key': 'value'}Главное запомнить
- f-строка =
f"текст {переменная}"Подставляет значения переменных и выражений прямо в строку
- Внутри
{}работает любой Python-кодАрифметика, вызовы функций, методы — всё что возвращает значение
- Форматирование через
::.2f— округление,:,— разделитель тысяч,:.1%— проценты,:%d.%m.%Y— даты {x=}— отладка в одно действиеВыводит и имя переменной, и значение (Python 3.8+)
f-строки— стандарт с Python 3.6Если сомневаешься что использовать — используй их
Кот-наставник— Вот и всё! Теперь ты можешь собирать любые строки красиво и читаемо. Забудь про склейку плюсами.
— Попробуй сам — напиши пару f-строк и посмотри, как Python всё подставляет.
f-строки запоминаются, когда пишешь их сам!
На SkillPy это не сухая теория, а интерактивная практика: ты подставляешь переменные, форматируешь числа и даты, а AI-наставник сразу проверяет результат и подсказывает, где ошибся.
