Python数字格式

时间:2012-06-19 11:14:16

标签: python formatting

  

可能重复:
  String formatting options: pros and cons

之间有什么区别
"%.2f" % x

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

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

2 个答案:

答案 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()有一些优点:

  1. 允许用户定义的类提供自己的格式化标志
  2. 可以访问对象的属性
  3. 虽然在你的浮动示例中,这些都不是优势。

    这两种技术都将继续发挥作用,因此您使用的技术取决于您。有人认为%-formatting将从Python 3中删除,但现在已经不再适用了。请参阅3.2 docs

      

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