Python способ печати: с форматом или формой процента?

В Python, кажется, существуют два разных способа создания форматированного вывода:

user = "Alex"
number = 38746
print("%s asked %d questions on stackoverflow.com" % (user, number))
print("{0} asked {1} questions on stackoverflow.com".format(user, number))

Есть ли способ быть предпочтительным по сравнению с другим? Являются ли они эквивалентными, в чем разница? Какую форму следует использовать, особенно для Python3?

Ответ 1

Используйте метод format, особенно если вы беспокоитесь о Python 3 и будущем. Из документации:

Описанные здесь операции форматирования смоделированы по синтаксису C printf(). Они поддерживают только форматирование определенных встроенных типов. Использование бинарного оператора означает, что может потребоваться осторожность для правильного форматирования кортежей и словарей. Поскольку новый синтаксис: ref: string-formatting более гибок и, естественно, обрабатывает кортежи и словари, он рекомендуется для нового кода. Однако в настоящее время нет планов отказаться от форматирования printf -style.

Ответ 2

.format был введен в Python2.6

Если вам нужна обратная совместимость с предыдущим Python, вы должны использовать %

Для Python3 и новее вы должны использовать .format для уверенного

.format более мощный, чем %. Портирование % в .format выполняется легко, но наоборот может быть нетривиальным

Ответ 3

Документы говорят, что метод format предпочтителен для нового кода. В настоящее время не планируется удаление% форматирования.

Ответ 4

Вы можете использовать оба.Нет одного указанного выражения форматирования%, которое устарело. Однако, как указывалось ранее, метод метода метода является более мощным. Также обратите внимание, что выражения% более сжатые и более простые для кода. Попробуйте их и посмотрите, что вам подходит лучше всего