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