Форматирование чисел Python

Возможный дубликат:
Параметры форматирования строки: плюсы и минусы

В чем разница между

"%.2f" % x

а также

"{:.2f}".format(x)

Я немного запутался в том, какой метод мне использовать и для какой версии Python.

2 ответа

Решение

В общем, вы хотите использовать 2-ю форму (.format()) он новее, а другой со временем уйдет (по крайней мере, так было задумано в какой-то момент - см. примечания ниже).

Чтобы процитировать Python, что нового в документации по Python 3.0:

Новая система для встроенных операций форматирования строки заменяет оператор форматирования строки%. (Тем не менее, оператор% по-прежнему поддерживается; он будет исключен в Python 3.1 и удален из языка через некоторое время.) Прочитайте PEP 3101 для полной информации.

.format() был доступен как минимум с Python 2.6

Дополнительная информация о расширенном форматировании строк (PEP 3101)

Примечания:

@Duncan также упоминает ссылку на поток, который обсуждает, когда % Форматирование на основе исчезнет в комментариях ниже. И у @NedBatchelder есть определенная цитата из документов Python 3.2: " ... there are no current plans to deprecate printf-style formatting. "

Стиль% имеет тенденцию быть более коротким, но также более ограниченным. .format() имеет некоторые преимущества:

  1. позволяет пользовательским классам предоставлять свои собственные флаги форматирования,
  2. может получить доступ к атрибутам объектов

хотя в вашем примере с float ни один из них не является преимуществом.

Оба эти метода будут продолжать работать, так что вы будете использовать их. Была идея, что%-форматирование будет удалено из Python 3, но это больше не так. Смотрите 3.2 документы:

Поскольку новый синтаксис форматирования строк более гибок и, естественно, обрабатывает кортежи и словари, он рекомендуется для нового кода. Однако в настоящее время нет планов отказаться от форматирования в стиле printf.

Другие вопросы по тегам