0Pricing
Python Academy · Урок

Шаблонные строки и 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 — локальная установка не требуется.

Все уроки этого курса

  1. Выражения f-строк
  2. Спецификаторы формата
  3. Мини-язык форматирования
  4. Шаблонные строки и str.format
← Назад к Python Academy