在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?
答案 0 :(得分:102)
使用format
方法,特别是如果您关注Python 3和未来。来自the documentation:
此处描述的格式化操作以C
printf()
为模型 句法。它们仅支持某些内置类型的格式化。该 使用二元运算符意味着可能需要小心谨慎 正确格式化元组和字典。作为新的 :ref:string-formatting
语法更灵活,处理元组和 字典自然,建议用于新代码。但是,那里 目前没有计划弃用printf
- 样式格式。
答案 1 :(得分:21)
.format
如果您需要向后兼容早期的Python,则应使用%
对于Python3及更新版本,您应该使用.format
来确保
.format
比%
更强大。将%
移植到.format
很容易,但反过来可能非常简单
答案 2 :(得分:7)
The docs表示新代码首选format
方法。但是,目前没有计划删除%格式。
答案 3 :(得分:7)
你可以使用两者。没有人说过%格式表达式已被弃用。但是,如前所述格式化方法调用有点强大。 另请注意,%表达式更简洁,更容易编码。尝试使用它们并查看最适合您的内容