96

在 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

4 回答 4

108

使用该format方法,特别是如果您担心 Python 3 和未来。从文档中

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

于 2012-09-12T07:00:26.673 回答
25

.format在Python2.6中引入

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

对于 Python3 和更新版本,您应该.format确定使用

.format比 更强大%。移植%.format很容易,但反过来可能不是微不足道的

于 2012-09-12T07:05:19.367 回答
8

文档说该format方法是新代码的首选。不过,目前没有删除 % 格式的计划。

于 2012-09-12T07:04:13.003 回答
8

您可以同时使用两者。没有人说不推荐使用 % 格式化表达式。但是,如前所述,格式方法调用更强大。另请注意,% 表达式更简洁,更容易编码。试试它们,看看最适合你的

于 2013-12-23T07:46:17.893 回答