Python的打印方式:用“格式”还是百分比forms?

在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)) 

有一种方法比另一种更受欢迎吗? 他们是否相同,有什么区别? 应该使用什么forms,尤其是Python3?

使用format方法,特别是如果你关心Python 3和未来。 从文档 :

这里描述的格式化操作[%substitutions]已经过时,可能会在未来的Python版本中消失。 在新代码中使用新的string格式。

.format是在Python2.6中引入的

如果你需要向前兼容Python,你应该使用%

对于Python3和更新,你应该使用.format

.format%更强大。 将%移植到.format是很容易的,但.format是微不足道的

你可以同时使用。没有人说%格式化expression式是不赞成的。但是,正如之前所说的格式化方法调用是一个更加强大。 还要注意,%expression式更简洁,更容易编码。试试看看最适合您的是什么

文档说format方法是新代码的首选。 目前还没有计划去除%格式化。