На этом шаге мы рассмотрим, в чем заключается этот способ.
Python 3 ввел новый способ форматирования строк, который позднее был также перенесен в Python 2.7. Это "современное" форматирование строк избавляется от специального синтаксиса с использованием оператора % и делает синтаксис форматирования строк более упорядоченным.
Форматирование теперь обрабатывается вызовом функции format() со строковым объектом.
Функция format() может применяться для выполнения простого позиционного форматирования, точно так же, как вы могли поступать в случае с "классическим" форматированием:
>>> 'Привет, {}'.format(name) 'Привет, Боб'
Либо вы можете обращаться к подстановкам переменных по имени и использовать их в любом порядке, в котором вы захотите. Это довольно мощное функциональное средство языка, поскольку оно позволяет изменять порядок следования отображаемых элементов, не изменяя аргументы, переданные в функцию форматирования:
>>> 'Эй, {name}! Вот ошибка 0x{errno:x}!'.format(name=name, errno=errno) 'Эй, Боб! Вот ошибка 0xbadc0ffee!'
Этот пример также показывает, как изменился синтаксис форматирования целочисленной переменной в виде шестнадцатеричной строки. Теперь мы должны передавать спецификацию формата (format spec) путем добавления суффикса ":х" после имени переменной.
В целом синтаксис форматной строки стал мощнее, не усложнив при этом более простые варианты использования. Время, потраченное на подробное изучение документации Python по мини-языку форматирования строк, с лихвой окупится.
В Python 3 "современному" форматированию строк отдается предпочтение по сравнению с форматированием с использованием %. Однако, начиная с Python 3.6, появился еще более оптимальный способ форматирования строковых значений. И с этим способом мы познакомимся на следующем шаге.
На следующем шаге мы рассмотрим интерполяцию литеральных строк.