Python的打印方式:使用'格式'或百分比形式?

时间:2012-09-12 06:58:22

标签: python printing format

在Python中,似乎有两种不同的方式来生成格式化输出:

user = "Alex"
number = 38746
print("%s asked %d questions on stackoverflow.com" % (user, number))
print("{0} asked {1} questions on stackoverflow.com".format(user, number))

有没有一种方法可以优先于另一种方式?它们是等价的,有什么区别?应该使用什么形式,特别是对于Python3?

4 个答案:

答案 0 :(得分:102)

使用format方法,特别是如果您关注Python 3和未来。来自the documentation

  

此处描述的格式化操作以C printf()为模型      句法。它们仅支持某些内置类型的格式化。该      使用二元运算符意味着可能需要小心谨慎      正确格式化元组和字典。作为新的      :ref:string-formatting语法更灵活,处理元组和      字典自然,建议用于新代码。但是,那里      目前没有计划弃用printf - 样式格式。

答案 1 :(得分:21)

在Python2.6中引入了

.format

如果您需要向后兼容早期的Python,则应使用%

对于Python3及更新版本,您应该使用.format来确保

.format%更强大。将%移植到.format很容易,但反过来可能非常简单

答案 2 :(得分:7)

The docs表示新代码首选format方法。但是,目前没有计划删除%格式。

答案 3 :(得分:7)

你可以使用两者。没有人说过%格式表达式已被弃用。但是,如前所述格式化方法调用有点强大。 另请注意,%表达式更简洁,更容易编码。尝试使用它们并查看最适合您的内容