SkillPy

Экранирование фигурных скобок в f-строке Python

Время чтения8 мин чтения
Опубликовано19 сентября 2026 г.
Легко
Python
Строки
Синтаксис
Начинающим
Экранирование фигурных скобок в f-строке Python

В f-строке Python фигурные скобки {} — это спецсимвол: место, куда подставляется значение переменной. Поэтому, чтобы вывести саму фигурную скобку как символ, её нужно экранировать — удвоить. Разберём, как это работает и где та же логика встретится снова.

Коротко

Чтобы вывести фигурную скобку в f-строке, удвой её: {{ даёт {, а }} даёт }. Одиночные {} Python воспринимает как подстановку и попытается найти внутри выражение.

print(f"{{}}")
print(f"Множество: {{1, 2, 3}}")
{}
Множество: {1, 2, 3}

Почему одиночные скобки не работают

Внутри f-строки одиночные {...} — это инструкция «вычисли выражение и вставь результат». Если написать f"{}", Python решит, что внутри должно быть выражение, не найдёт его и выдаст синтаксическую ошибку. Удвоенные {{ и }} говорят интерпретатору: «это не подстановка, а сам символ скобки».

Скобку-литерал можно совмещать с обычной подстановкой:

value = 42
print(f"Значение {{в скобках}}: {value}")
Значение {в скобках}: 42

Здесь {{в скобках}} вывелось как текст {в скобках}, а {value} — как подстановка 42. Про сами f-строки и подстановку выражений — в гайде f-строки в Python: форматирование строк просто и читаемо.

Где та же логика встретится снова

Точно то же правило действует в методе str.format(): там {} — это тоже место для подстановки, а {{ и }} выводят литеральные скобки. Это особенно важно, когда формируешь текст с фигурными скобками внутри: JSON, CSS-правила, шаблоны кода.

name = "Барсик"
print(f'{{"cat": "{name}"}}')
{"cat": "Барсик"}

Внешние {{ и }} дали литеральные скобки JSON, а {name} подставил значение. Строки как тип данных и их особенности — в гайде Типы данных в Python: полный гайд для начинающих.

Когда экранировать не нужно

В обычной строке (без префикса f и без .format()) фигурные скобки — не спецсимвол. Там {} пишутся как есть, удваивать не надо. Экранирование через {{ }} нужно только в f-строках и в str.format().

print("Обычная строка с {} — без экранирования")
Обычная строка с {} — без экранирования

Короткие ответы на вопросы

Как вывести фигурную скобку в f-строке?

Удвой её: {{ для открывающей и }} для закрывающей. Например, f"{{}}" выведет {}.

Работает ли это в .format()?

Да, правило то же: в str.format() одиночные {} — подстановка, а {{ и }} — литеральные скобки.

Нужно ли экранировать скобки в обычной строке?

Нет. В строке без f и без .format() фигурные скобки — обычные символы, их пишут как есть.

Кот-наставник

— Правило на пальцах: в f-строке одна скобка — это «вставь значение», двойная — «покажи саму скобку».

— Формируешь JSON или CSS в f-строке? Все литеральные скобки удваивай, а подстановки оставляй одинарными.

f-строки чувствуются на практике

На SkillPy ты пишешь форматирование сам, а AI-наставник сразу показывает, где скобка — подстановка, а где — литерал, и почему строка не собирается. Он понимает твой код, а не сверяет с шаблоном.