我终于在我的 2.x 代码中切换%
到.format()
字符串格式化运算符,以便将来更容易迁移到 3.x。令人惊讶的%
是,Py3 中不仅保留了 -style 格式,而且还广泛用于标准库代码中。这似乎是合乎逻辑的,因为写作'(%s)' % variable
比'({})'.format(variable)
. 但我仍然有疑问。在代码中使用这两种方法是否合适(pythonic?)?谢谢你。
问问题
25681 次
2 回答
28
Python 3.2 文档说,%
最终会消失。
http://docs.python.org/3.2/tutorial/inputoutput.html#old-string-formatting
由于
str.format()
很新,很多 Python 代码仍然使用%
操作符。但是,因为这种旧式的格式化方式最终会从语言中移除,所以str.format()
一般应该使用。
但正如@regilero 所说,这句话从 3.3 消失了,这可能表明情况并非如此。这里有一些对话暗示了同样的事情。
从Python 3.4 开始,第 7.1.1 段内容如下:
% 运算符也可用于字符串格式化。它解释左参数很像 sprintf() 样式的格式字符串,以应用于右参数,并返回此格式化操作产生的字符串。
于 2013-02-07T14:50:58.157 回答
-1
“%s”现在是“{}”,因此添加 %s 时将其替换为 {},您希望将变量添加到字符串中。
def main():
n="Python 3.+"
l="looks nice"
f="does not look practical."
print("This seems to be the new way {}".format(n)\
+ "will be working, rather than the ' % ',{} but {}".format(l,f))
main()
#In comparison to just injecting the variable
出于说明原因,输出忽略它们的报价
“这似乎是“Python 3.+”的新工作方式,而不是 '%;,“看起来不错”但“看起来不实用。”
于 2014-05-18T07:27:55.320 回答