Форматирование чисел 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() имеет некоторые преимущества:
- позволяет пользовательским классам предоставлять свои собственные флаги форматирования,
- может получить доступ к атрибутам объектов
хотя в вашем примере с float ни один из них не является преимуществом.
Оба эти метода будут продолжать работать, так что вы будете использовать их. Была идея, что%-форматирование будет удалено из Python 3, но это больше не так. Смотрите 3.2 документы:
Поскольку новый синтаксис форматирования строк более гибок и, естественно, обрабатывает кортежи и словари, он рекомендуется для нового кода. Однако в настоящее время нет планов отказаться от форматирования в стиле printf.