之间有什么区别
"%.2f" % x
和
"{:.2f}".format(x)
我对使用哪种方法以及Python的哪个版本感到有点困惑。
答案 0 :(得分:7)
一般情况下,您希望使用第二种形式(.format()
)它更新,而另一种形式最终会消失(至少那是某种意图 - 请参阅下面的注释 )。
引用Python What’s New In Python 3.0 文档:
内置字符串格式化操作的新系统取代了% 字符串格式化运算(但是,%运算符仍然是 支持的;它将在Python 3.1中弃用并从中删除 以后的语言。)阅读PEP 3101获取完整的独家新闻。
.format()
至少可以使用Python 2.6
有关Advanced String Formatting (PEP 3101)
的更多信息备注:
@Duncan还提到reference to a thread,讨论基于%
的格式是否/何时会在下面的评论中消失。 @NedBatchelder有Python 3.2 docs的明确引用:“... there are no current plans to deprecate printf-style formatting.
”
答案 1 :(得分:3)
% - 风格往往更简洁,但也更有限。 .format()有一些优点:
虽然在你的浮动示例中,这些都不是优势。
这两种技术都将继续发挥作用,因此您使用的技术取决于您。有人认为%-formatting将从Python 3中删除,但现在已经不再适用了。请参阅3.2 docs:
由于新的String Formatting语法更灵活并且自然地处理元组和字典,因此建议使用新代码。但是,目前没有计划弃用printf样式的格式。