Вышла первая бета-версия Python 3.14, в которой завезли целый список различных изменений. Возможно, про какие-нибудь ещё поговорим позже, но про одно прям-таки не могу молчать :)
Завезли PEP 750 - шаблонные строки. По сути своей штука до боли знакома: если не копать в подробности, то это та же самая f-строка, которая позволяет подставлять значения в строку по определённому образцу:
name = "World"
template = t"Hello {name}"
print(template) # Hello World
Зачем, казалось бы, ещё одна реализация f-строк? А дьявол кроется в деталях! На самом деле разница между f-строками и шаблонными строками состоит в том, какой тип мы получаем в результате выполнения: при вычислении значения f-строки мы в итоге получим готовую строку, а при вычислении шаблонной строки - объект класса
Template (лежит в string.templatelib), с которым далее мы можем творить всякие интересности.Смысл сей магии в том, что теперь в языке появилась собственная гибкая обработка строк, позволившая делать проверки безопасности (привет, taint-анализ), колдовать с веб-шаблонами и всякое подобное.
Например, мы можем доставать из шаблонной строки её части, а также конкретные интерполированные значения:
name = "World"
template = t"Hello {name}"
assert template.strings[0] == "Hello "
assert template.interpolations[0].value == "World"
Также есть возможность достать из такой строки изначально подставленное значение:
name = "World"
template = t"Hello {name}"
assert template.interpolations[0].expression == "name"
Помимо этого, шаблонные строки поддерживают мини-язык format specification (поле
format_spec типа Template).🎤 feelin про #Python