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