4

可能重复:
字符串格式选项:优点和缺点

有什么区别

"%.2f" % x

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

我对应该使用哪种方法以及哪个版本的 Python 有点困惑。

4

2 回答 2

7

一般来说,您想使用第二种形式 ( .format()),它较新,而另一种最终会消失(至少在某些时候这是意图 - 请参阅下面的注释)。

引用 Python What's New In 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.

于 2012-06-19T11:15:05.233 回答
3

%-style 往往更简洁,但也更有限。.format() 有一些优点:

  1. 允许用户定义的类提供自己的格式化标志,
  2. 可以访问对象的属性

尽管在您使用浮点数的示例中,这些都不是优势。

这两种技术都将继续有效,因此您使用哪种技术取决于您。有一个想法是 %-formatting 将从 Python 3 中删除,但这不再是真的。请参阅3.2 文档

由于新的字符串格式化语法更加灵活,并且可以自然地处理元组和字典,因此建议用于新代码。但是,目前没有弃用 printf 样式格式的计划。

于 2012-06-19T11:33:28.830 回答