Шаблонные строки и str.format
Другие инструменты форматирования
«Шаблонные строки и str.format» — бесплатный урок Python Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Python Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Python Academy содержит 4 уроков всего.
Другие средства форматирования
Помимо f-строк, Python предлагает ещё два средства форматирования: метод str.format() и класс string.Template. Каждое из них подходит для разных ситуаций.
print('Hello, {}!'.format('World'))Основы str.format
str.format() заменяет заполнители {} аргументами в указанном порядке. Этот способ появился раньше f-строк и до сих пор часто встречается в коде.
msg = '{} is {} years old'.format('Ada', 36)
print(msg)Позиционные индексы
Помещайте числа в фигурные скобки, чтобы повторно использовать аргументы или менять их порядок по позиции.
print('{0} {1} {0}'.format('echo', 'once'))Именованные заполнители
Используйте имена внутри фигурных скобок и передавайте именованные аргументы. Благодаря этому шаблоны становятся понятными без дополнительных пояснений.
print('{name} scored {score}'.format(name='Lin', score=95))Спецификации формата по-прежнему работают
Тот же мини-язык работает после двоеточия в str.format, поэтому можно управлять шириной, точностью и выравниванием.
print('{:.2f}'.format(3.14159))
print('{:>8}'.format('hi'))Форматирование из словаря
Распакуйте словарь в str.format с помощью **, чтобы заполнить именованные заполнители.
data = {'city': 'Rome', 'temp': 27}
print('{city}: {temp} C'.format(**data))Знакомство со строками-шаблонами
string.Template использует заполнители на основе $. Этот способ намеренно сделан простым и более безопасным для шаблонов, предоставленных пользователем, поскольку он не может выполнять произвольные выражения.
from string import Template
t = Template('Hello, $name!')
print(t.substitute(name='World'))Фигурные скобки для ясности
Заключайте имя заполнителя в фигурные скобки, например ${name}, если сразу после него идёт другой текст.
from string import Template
t = Template('${item}s cost $$5')
print(t.substitute(item='apple'))safe_substitute
substitute вызывает KeyError для отсутствующих имён. В отличие от него, safe_substitute оставляет неизвестные заполнители без изменений.
from string import Template
t = Template('$greeting, $name')
print(t.safe_substitute(greeting='Hi'))Когда что использовать
Рекомендации: для повседневного кода предпочитайте f-строки. Используйте str.format, когда шаблон отделён от данных. Выбирайте шаблоны для ненадёжных шаблонов, предоставленных пользователем.
name = 'Sam'
print(f'f-string: {name}')
print('format: {}'.format(name))Шаблоны из внешнего текста
Поскольку текст шаблона — это обычная строка, Вы можете загрузить его из файла конфигурации или базы данных, а затем подставить значения во время выполнения.
from string import Template
stored = 'Order $id ships to $city'
t = Template(stored)
print(t.substitute(id=7, city='Oslo'))Быстрая проверка
Какой инструмент наиболее безопасен для подстановки значений в шаблон, предоставленный ненадёжным пользователем?
Повторение: строки шаблонов и str.format
Кратко о вариантах, альтернативных f-строкам:
str.format()использует заполнители{}и поддерживает позиционные и именованные аргументы, а также полную спецификацию формата.- Шаблоны строк используют заполнители вида
$nameи безопасны для ненадёжных входных данных. - Безопасная подстановка оставляет неизвестные заполнители без изменений.
- В обычном коде предпочитайте f-строки, а эти инструменты используйте для внешних или ненадёжных шаблонов.
from string import Template
print(Template('Bye, $who').substitute(who='all'))
print('Done: {}'.format(True))Часто задаваемые вопросы
Урок «Шаблонные строки и str.format» бесплатный?
Да — полный текст урока «Шаблонные строки и str.format» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Python Academy, подпишись на CoddyKit PRO. Курс Python Academy содержит 4 уроков всего.
Чему я научусь в уроке «Шаблонные строки и str.format»?
Другие инструменты форматирования Ты практикуешь Python Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Python Academy?
Предыдущий опыт не требуется. Python Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Шаблонные строки и str.format»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Python Academy?
Да. Каждый урок Python Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Выражения f-строк
- Спецификаторы формата
- Мини-язык форматирования
- Шаблонные строки и str.format